溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

android菜單創(chuàng)建的兩種方式和菜單項(xiàng)添加圖標(biāo)

發(fā)布時(shí)間:2020-06-06 21:25:06 來源:網(wǎng)絡(luò) 閱讀:3833 作者:楊少華_55161 欄目:移動(dòng)開發(fā)

    菜單創(chuàng)建的兩種方式:


    1、在xml文件中創(chuàng)建菜單:


        具體代碼:

    <menu xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        tools:context="com.xunfang.menucreate.MainActivity" >

    //此處創(chuàng)建子菜單

        <item

            android:id="@+id/sms"

            android:icon="@drawable/sms"

            android:orderInCategory="100"

            android:showAsAction="never"

            android:title="短信">

            <menu>

                <item

                    android:id="@+id/smsfamily"

                    android:icon="@drawable/smsalt"

                    android:orderInCategory="100"

                    android:showAsAction="never"

                    android:title="家庭短信"/>

                <item

                    android:id="@+id/smscompany"

                    android:icon="@drawable/twitteralt"

                    android:orderInCategory="100"

                    android:showAsAction="never"

                    android:title="公司短信"/>

            </menu>

        </item>

        <item

            android:id="@+id/camera"

            android:icon="@drawable/camera"

            android:orderInCategory="100"

            android:showAsAction="never"

            android:title="照相機(jī)"/>

    </menu>

    這種情況下創(chuàng)建菜單時(shí),需要用到item標(biāo)簽,創(chuàng)建一個(gè)菜單選項(xiàng),就必須用到一個(gè)item

    當(dāng)需要創(chuàng)建子菜單的時(shí)候:如有背景色的部分那樣,在主菜單下創(chuàng)建子菜單,需要在item中嵌套一個(gè)menu標(biāo)簽,然后在menu標(biāo)簽中寫子菜單,每一個(gè)子菜單還是要寫在item標(biāo)簽中。


    2、動(dòng)態(tài)創(chuàng)建菜單:

        

    public boolean onCreateOptionsMenu(Menu menu) {

                //給文件創(chuàng)建子菜單

    SubMenu sub = menu.addSubMenu(Menu.FIRST, 1, 1, "文件") ;

     sub.add(Menu.FIRST+3, 10, 1, "隱藏組3") ;

     sub.add(Menu.FIRST+3, 11, 2, "顯示組3") ;

    

     menu.add(Menu.FIRST,2,2,"編輯") ;

     sub.setIcon(R.drawable.browser) ;

     sub.setHeaderIcon(R.drawable.browser) ;

    

     MenuItem refactor = menu.add(Menu.FIRST + 1,3,10,"重構(gòu)") ;

     refactor.setIcon(R.drawable.clock) ;

     MenuItem source = menu.add(Menu.FIRST + 1,4,6,"源碼") ;

     source.setIcon(R.drawable.sms) ;

    

     menu.add(Menu.FIRST + 2 ,5,5,"導(dǎo)航") ;

     menu.add(Menu.FIRST + 2,6,3,"搜索") ;

     return true;

     }

    上面add()方法中的四個(gè)參數(shù)分別為:第一個(gè)參數(shù)表示處于同一個(gè)組中

                                     第二個(gè)參數(shù)表示一個(gè)唯一的id   

                                     第三個(gè)參數(shù)是一個(gè)id,表示在菜單中菜單項(xiàng)顯示的順序

                                     第四個(gè)參數(shù)表示顯示的文本     

        

注:給菜單項(xiàng)添加圖標(biāo):


    

    private void setIconVisible(Menu menu) {

    

     try {

     Class clazz = Class

     .forName("com.android.internal.view.menu.MenuBuilder");

     Method m = clazz.getDeclaredMethod("setOptionalIconsVisible",

     boolean.class);

     m.setAccessible(true);

     m.invoke(menu, true);

     } catch (Exception e) {

     e.printStackTrace();

     }

     }

    有背景的部分為代碼關(guān)鍵部分,上面這個(gè)方法是我自己添加的一個(gè)方法,在添加圖標(biāo)的時(shí)候只需要調(diào)用這個(gè)方法就行了。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI