Friday, 25 July 2014

PopupMenu in Android API 8+

Popup menu is available from API 11. If we want to use it in API 9 we have to use android-support-v7-appcompat library.



Download Source Code DOWNLOAD

1. Go to File->Import

2. Click Existing Android Code Into Workspace

3.Click Browse

4.Goto where SDK is present SDK->extras->android->support->v7->appcompact

5. Tick Copy projects into workspace

6. Now RightClick on Project->Properties

7. Android->Add Library->android-support-v7-appcompat library.



8. import android.support.v7.widget

Important:- In AndoridManifest.xml set theme "@style/Theme.AppCompat.Light"

9. Now create a xml file for popupmenu
Goto Project->res folder->menu folder create popupmenu.xml


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/Item1"
        android:icon="@drawable/ic_launcher"
        android:title="Item1"/>
    <item
        android:id="@+id/Item2"
        android:icon="@drawable/ic_launcher"
        android:title="Item2"/>
    <item
        android:id="@+id/Item3"
        android:icon="@drawable/ic_launcher"
        android:title="Item3"/>

</menu>

10. For showing icon in popupmenu reflection in used-

void showPopupWindow(View view) {
      PopupMenu popup = new PopupMenu(MainActivity.this, view);
      try {
            Field[] fields = popup.getClass().getDeclaredFields();
            for (Field field : fields) {
                  if ("mPopup".equals(field.getName())) {
                        field.setAccessible(true);
                        Object menuPopupHelper = field.get(popup);
                        Class<?> classPopupHelper = Class.forName(menuPopupHelper.getClass().getName());
                        Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class);
                        setForceIcons.invoke(menuPopupHelper, true);
                        break;
                  }
            }
      } catch (Exception e) {
            e.printStackTrace();
      }
      popup.getMenuInflater().inflate(R.menu.popupmenu, popup.getMenu());
      popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            public boolean onMenuItemClick(MenuItem item) {
                  Toast.makeText(getApplicationContext(), "You Clicked : " + item.getTitle(),      Toast.LENGTH_SHORT).show();
                  return true;
            }
      });
      popup.show();
}

11. On button click we will call this function , we just have to pass the View. Open activity_main.xml -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnShowPopup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Show Popup" />

</LinearLayout>

12.  MainActivity.java

package com.tutorialsface.popupmenu;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

      Button btnShowPopup;
     
      @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btnShowPopup = (Button) findViewById(R.id.btnShowPopup);
            btnShowPopup.setOnClickListener(new OnClickListener() {
                  @Override
                  public void onClick(View v) {
                        showPopupWindow(v);
                  }
            });
      }
     
      void showPopupWindow(View view) {
            PopupMenu popup = new PopupMenu(MainActivity.this, view);
            try {
                  Field[] fields = popup.getClass().getDeclaredFields();
                  for (Field field : fields) {
                        if ("mPopup".equals(field.getName())) {
                              field.setAccessible(true);
                              Object menuPopupHelper = field.get(popup);
                              Class<?> classPopupHelper = Class.forName(menuPopupHelper.getClass().getName());
                              Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class);
                              setForceIcons.invoke(menuPopupHelper, true);
                              break;
                        }
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            }
            popup.getMenuInflater().inflate(R.menu.popupmenu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
     
                  public boolean onMenuItemClick(MenuItem item) {
                        Toast.makeText(getApplicationContext(), "You Clicked : " + item.getTitle(),  Toast.LENGTH_SHORT).show();
                        return true;
                  }
            });
            popup.show();
      }
}

13. AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tutorialsface.popupmenu"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light" >
        <activity android:name="com.tutorialsface.popupmenu.MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Download Source Code DOWNLOAD



5 comments:

  1. Permanent sidebar blogroll backlinks on real websites with dofollow links for long-term SEO authority and stable rankings. backlink blogroll

    ReplyDelete
  2. SUPER33 kembali hadir jadi website gaming gratis top no 1 di Indonesia yang memberikan pengalaman tak terlupakan tanpa perlu modal besar. Mulai dari design grafis versi terbaru MMORPG dengan open map membuat semua game terasa lebih hidup dan seru untuk dimainkan selama berjam-jam. Konsep modal kecil yang ditawarkan SUPER33 menjadikan pemain betah tanpa harus berpindah ke situs lainnya. Apalagi ada admin super 24 jam yang siap menenami para pemain dari malam hingga pagi sampai puas. super33 slot

    ReplyDelete
  3. Terongbet menjadi salah satu link platform game online terbaik di Indonesia yang menawarkan pengalaman bermain cepat, stabil, dan tanpa gangguan. Dengan sistem server yang terus diperbarui, pemain dapat mengakses berbagai permainan favorit kapan saja tanpa khawatir lag atau error. Hal ini menjadikan Terongbet sebagai pilihan utama bagi banyak pemain yang mengutamakan kenyamanan. Selain itu, Terongbet juga dikenal dengan pilihan game yang lengkap serta fitur modern yang mendukung peluang kemenangan lebih optimal. terongbet

    ReplyDelete
  4. TERONGBET: Situs Bermain Game Online Dan Gampang Menang Dengan Puas
    Di dunia hiburan digital yang makin rame, ada satu tempat yang gak cuma sekadar “main”—tapi beneran bikin nagih karena sensasinya beda. Namanya TERONGBET. Bukan sekadar situs game online biasa, ini tempat di mana peluang menang itu bukan sekadar harapan, tapi jadi pengalaman yang bisa dirasain langsung.

    TERONGBET hadir dengan konsep yang gak ribet tapi powerful. Interface-nya halus, navigasi ringan, dan yang paling penting—ritme permainannya terasa “hidup”. Lo gak akan ngerasa stuck atau dipaksa kalah. Justru di sini, setiap putaran tuh kayak punya cerita sendiri. Kadang slow, kadang meledak—dan di situlah letak keseruannya

    Yang bikin beda, TERONGBET itu ngerti banget psikologi pemain. Mereka gak cuma kasih game, tapi kasih “momentum”. Jadi ketika lo lagi hoki, sistemnya kayak ngasih jalan buat lanjut. Ini yang bikin banyak pemain bilang: “menang di sini tuh berasa puas, bukan sekadar numpang lewat

    terongbet

    ReplyDelete

  5. Jerukbet: Platform Slot Online Terpercaya dengan Deposit QRIS Praktis dan Aman
    Jerukbet menjadi salah satu platform slot online terpercaya yang menawarkan pengalaman bermain lebih seru dan menguntungkan. Dengan koleksi permainan slot dari berbagai provider populer, pemain memiliki banyak pilihan game dengan peluang menang yang menarik. Sistem yang stabil serta tampilan situs yang ramah pengguna membuat proses bermain terasa lebih nyaman, baik untuk pemula maupun pemain berpengalaman.

    Salah satu keunggulan utama Jerukbet adalah kemudahan transaksi menggunakan metode deposit QRIS. Cukup dengan minimal deposit 5000 rupiah, pemain sudah dapat langsung menikmati berbagai permainan yang tersedia. Proses deposit berlangsung cepat dan otomatis, sehingga tidak perlu menunggu lama untuk mulai bermain dan meraih peluang kemenangan

    Tidak hanya unggul dari segi permainan dan transaksi, Jerukbet juga mengutamakan keamanan setiap member. Teknologi enkripsi modern digunakan untuk menjaga data pribadi dan transaksi tetap terlindungi. Ditambah dengan layanan customer service yang siap membantu 24 jam, Jerukbet hadir sebagai pilihan tepat bagi siapa saja yang mencari platform slot online aman, cepat, dan terpercaya

    jerukbet

    ReplyDelete