Menu


Pengenalan kepada bahagian ini:

Bab ini membawakan anda Menu dalam Android, dan menu dalam Android termasuk jenis berikut:

  • OptionMenu: menu pilihan, menu paling biasa dalam android, dipanggil melalui kekunci Menu
  • SubMenu: submenu, mengklik pada submenu dalam android akan muncul paparan Kotak terapung bagi item submenu, Submenu tidak menyokong bersarang, iaitu, mereka tidak boleh memasukkan submenu lain
  • ContextMenu: menu konteks, menu yang muncul selepas menekan lama komponen paparan, komponen perlu mendaftar menu konteks Dalam bahagian ini, mari belajar cara menggunakan menu ini dalam Yiyi~ PS: Dokumen rasmi: menu

1.OptionMenu (menu pilihan)


1) Bagaimana untuk menggunakan OptionMenu?

Jawapan: Sangat mudah, hanya tulis semula dua kaedah Sebenarnya, kedua-dua kaedah ini akan dijana secara automatik apabila kita membuat projek~ Ia adalah:

  • public boolean onCreateOptionsMenu(Menu menu): Call OptionMenu dan lengkapkan permulaan menu di sini
  • public boolean onOptionsItemSelected ( Item MenuItem): Dicetuskan apabila item menu dipilih, pemprosesan acara selesai di sini

Sudah tentu, sebagai tambahan kepada dua kaedah di atas yang boleh kita timpa, kita juga boleh mengatasi ketiga-tiga kaedah ini:

  • public void onOptionsMenuClosed(Menu menu): Kaedah ini akan dipanggil apabila menu ditutup
  • public boolean onPrepareOptionsMenu(Menu Menu) : sebelum menu pilihan dipaparkan Kaedah ini akan dipanggil, Menu boleh dilaraskan di sini (pemuatan dinamik senarai menu)
  • public boolean onMenuOpened(int featureId, Menu menu): Kaedah ini akan dipanggil selepas menu pilihan dibuka

Terdapat dua cara untuk memuatkan menu Salah satunya ialah dengan menulis terus fail XML menu dan kemudian memanggil: getMenuInflater().inflate(R.menu.menu_main, menu); muat menu Atau tambahkannya secara dinamik melalui kod, menu parameter onCreateOptionsMenu, panggil kaedah tambah untuk menambah Menu, tambah (nombor kumpulan, ID, nombor isihan, tajuk item menu), dan jika nombor isihan diisih mengikut susunan penambahan, hanya isikan 0!


2) Contoh penggunaan:

Menjalankan pemaparan :

1.gif

Pelaksanaan kod :

MainActivity.java:

kelas awam MainActivity memanjangkan AppCompatActivity {

    //1.定义不同颜色的菜单项的标识:

    //1.定义不同颜色的菜单项的标识:

     //1.  final private int HIJAU = 111 ;
    final private int BLUE = 112;
    final private int KUNING = 113;
    final private int GRAY= 114;
 =    final private ; vate int BLACK= 116 ;

    peribadi TextView tv_test;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
                                                   super   setContentView(R.layout.activity_main );
        tv_test = (TextView) findViewById(R.id.tv_test);
    }

    @Override
    awam boolean u u                                                             / Tiupkan menu ; ini menambahkan item pada bar tindakan jika ada. >        menu.add(1,BLUE,3,"蓝色");
        menu.add(1,YELLOW,1,"黄色");
        menu.add(1,GAY,5,"灰色");
        menu.add(1,CYAN,6,"蓝绿色");
        menu.add(1,BLACK,7,"黑色");
        return  true; <🎜 

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Kendalikan action bar item clicks di sini. Bar tindakan akan
        // secara automatik mengendalikan klik pada butang Home/Up , sebegitu lama
       // seperti anda menentukan aktiviti ibu bapa dalam AndroidManifest.xml>.
        int id = item.getItemId();
        suis (id){
            kes MERAH:
               tv_test.set TextColor;                                                                                              🎜>            kes HIJAU:
                tv_test .setTextColor(Color.GREEN);
                break;
            case BLUE:
                tv test.set. TextBLUE >          tv test.    pecah;
            sarung KUNING:
                tv_test.setTextColor(Warna .KUNING);
                 pecah;
            sarung KELABU:
                tv_test.setTextColor(  Warna. KELABU);      > ;      > ;      >            kes CYAN:
                tv_test.setTextColor(Color.CYAN);
                 break;
             sarung HITAM:
                tv_test.setTextColor(Warna.HITAM);           ;          ;         ;         ;  }
        return super.onOptionsItemSelected(item);
    }
}

Analisis kod:

Kod di atas sangat mudah ia menunjukkan penambahan menu yang dinamik dalam OptionMenu (menu pilihan) Android 5.0. Dan pemprosesan acara, tentukan item yang pengguna klik berdasarkan ID, dan kemudian lakukan operasi yang sepadan! Di samping itu, satu perkara yang perlu diberi perhatian ialah menu pilihan telah melalui tiga peringkat peralihan: Dalam Android 2.3.x atau versi yang lebih rendah, kerana kebanyakan model pada peringkat ini mempunyai kekunci Menu, Pada peringkat ini, menu muncul dengan mengklik kekunci Menu:

2.png

Dalam Android 3.0 atau lebih tinggi, ia ialah menu tetapan dalam ActionBar yang diperkenalkan melalui 3.0: <🎜. >

3.png

Dalam versi 5.0 dan ke atas, ia berada dalam Bar Alat Selepas mengklik, gaya menu limpahan muncul

4.png

Selain itu. , melalui Untuk menentukan Menu dalam XML, kami menyiarkan kod rujukan mudah:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns :android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ ic_new_game"
android:title="@string/new_game"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android: icon="@drawable/ic_help"
android:title="@string/help" />
</menu>

Anda boleh menyemak dokumen lain sendiri~


2.ContextMenu (menu konteks)

Seperti yang kami katakan pada mulanya, ia muncul selepas lama menekan View Menu, kita perlu mendaftarkan menu konteks untuk View ini!


1) Bagaimana hendak menggunakan ContextMenu?

Jawapan: Proses yang digunakan adalah seperti berikut:

  • Langkah 1: Tulis semula kaedah onCreateContextMenu()
  • Langkah 2: Daftar menu konteks untuk komponen paparan, gunakan kaedah registerForContextMenu(), parameternya ialah View
  • Langkah 3: Tulis semula kaedah onContextItemSelected() untuk menentukan pendengar acara untuk item menu

Untuk OptionMenu di atas, kami menggunakan kaedah kod Java untuk melengkapkan penambahan item menu Di sini kami menggunakan fail XML kaedah untuk menjana CotnextMenu kami Di samping itu, sama ada untuk menggunakan kod Java untuk menjana menu atau menggunakan XML untuk menjana menu. Adalah disyorkan untuk menggunakan yang terakhir untuk menentukan menu, yang boleh mengurangkan pembekuan kod kod Java dan tidak perlu menggunakan peruntukan kod setiap kali id, anda hanya perlu mengubah suai fail XML untuk mengubah suai kandungan menu, yang menyediakan penyahgandingan yang lebih baik pada tahap tertentu. Gandingan rendah, kohesi tinggi, betul~


2) Contoh penggunaan:

Running rendering :

5.gif

Kod pelaksanaan:

Kami mula-mula menulis menu fail XML menu pilihan:

menu_context.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/ android" >
<!-- Tentukan satu set butang radio -->
<!-- Terdapat tiga nilai pilihan untuk checkableBehavior: tunggal ditetapkan kepada pemilihan radio, semuanya adalah pilihan berbilang, tiada adalah pilihan biasa -->
<kumpulan android:checkableBehavior="none">
/>
                                                                < android:title="@string/font_red"/>
</kumpulan>
</menu>

Kemudian kami menambah TextView berdasarkan menu pilihan, dan kemudian menambah perkara berikut:

TextView swasta tv_context;
tv_context = (TextView) findViewById(R.id . tv_context) ; Menu ContextMenu, View v,
ContextMenu.ContextMenfo Menuinfo) {
Menuinflator Inflator = New Menuinflator (this XT, Menu); }

//Kaedah ini dicetuskan apabila menu konteks diklik
@Override
public boolean onContextItemSelected(MenuItem item) {
suis (item. getItemId()) {
case R.id.blue:
tv_context.setTextColor(Color.BLUE);
break;
case R.id .green:
tv_context.setTextColor(Warna .HIJAU);
pecah ;
case R.id.red:
tv_context.setTextColor(Color.RED);
break;
}
return true;
}

Baiklah, semudah itu~ Anda boleh menetapkan konteks untuk berbilang Paparan, anda tahu suis(v.getId)~ Selain itu, seperti submenu yang akan dibincangkan kemudian, menu konteks tidak boleh memaparkan ikon!


3.SubMenu (submenu)

Submenu yang dipanggil hanyalah satu lagi lapisan <**menu* yang bersarang dalam <**item**> ;Itu sahaja

Contoh kod:

Menjalankan rendering

6.gif

Kod pelaksanaan:

Tulis fail Menu submenu: menu_sub.xml:

<?xml version="1.0" encoding="utf-8" ? >
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/submenu" android ; " android:title = "Submenu satu"/>
                                                                                                                                                                                                                                                                                                                                                                         id="@+id/three" android:title = "Sub-menu tiga"/>
/menu>

Kemudian kami menukar kandungan dua kaedah menu konteks di atas dan menggantikannya dengan kod berikut:

public void onCreateContextMenu(menu ContextMenu, View v,
                                                                                                                                                      {
//Bahagian Submenu:
MenuInflater inflator = new MenuInflater(this);
inflator.inflate(R.menu.menu_sub, menu);
super.onCreateContextMenu(menu, v, menuInfo ) ;
}

public boolean onContextItemSelected(MenuItem item) {
suis (item.getItemId()) {
case R.id.one:
To ast.makeText(MainActivity .ini,"Anda mengklik submenu satu",Toast.LENGTH_SHORT).show();
break;
case R.id.two:
item.setCheckable(true);
Toast .makeText (MainActivity.this,"Anda mengklik submenu dua",Toast.LENGTH_SHORT).show();
break;
case R.id.three:
Toast.makeText(Main Activity.this ,"You diklik pada submenu tiga",Toast.LENGTH_SHORT).show();
item.setCheckable(true);
break;
}
return true;
}

Baiklah, ia sangat mudah, bukan? Selain itu, jika anda ingin menambah submenu dalam kod Java, anda boleh memanggil addSubMenu()

Contohnya: SubMenu file = menu.addSubMenu("File" ) ;fail juga memerlukan addItem untuk menambah item menu!


4.Menu Popup (menu timbul)

Sesuatu yang serupa dengan PopupWindow, ia boleh memaparkan menu timbul dengan mudah di bawah Paparan yang ditentukan, dan Pilihan menunya boleh datang daripada sumber Menu Mari kita tulis contoh mudah untuk menggunakan bahan ini~

Contoh penggunaan:

Rendering berjalan:

7.gif

Kod pelaksanaan:

Fail sumber menu: menu_pop.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/lpig" android:title="Kecil Babi" />
<item android:id="@+id/bpig" android:title=" Babi besar" />
</menu>

Tambah butang pada reka letak dan tambah acara klik:

MainActivity.java:

btn_show_menu.setOnClickListener(new View.OnClickListener() {
            @Override
           public void >                                                                                                                                                   PopupMenu popup = new PopupMenu(MainActivity.this,btn_show_menu);
                 popup.getMenuInflater().inflate(R.menu.menu_pop, popup.getMenu());
                popup.setOnMenuItemClickListener(OnMenuItemClickListener(MenuClickListener) >                    @Override
                    boolean awam onMenuItemClick(MenuItem item) {
                        suis (item.getItemId()){
                           kes R.   lpig                                                                                                                                  Toast.makeText(MainActivity.this,"你点了小猪~",
                                Toast. Panjang_short) .show (); break;
case r.id.bpig:
toast.makeText (mainActivity.This, "你 点 了 大 猪 ~ ~",
toast.length_short). tunjukkan();
rehat;
                                                                                                                                                                                … kemahiran?


5. Contoh muat turun kod

MenuDemo1.zip
Ringkasan bahagian ini:


Baiklah, bahagian ini Memperkenalkan kepada anda tiga menu dalam Android, menu pilihan, menu konteks dan submenu Akhirnya Ia juga menerangkan kawalan PopupMenu Hanya penggunaan asas ditunjukkan di sini. Anda boleh merujuk kepada dokumentasi untuk sifat lain. Dokumentasi adalah guru terbaik~ Baiklah, itu sahaja, terima kasih, hari ini adalah Hari Kebangsaan.