现在的位置: 首页 > 综合 > 正文

Android通过XML来定义Menu

2018年05月11日 ⁄ 综合 ⁄ 共 2976字 ⁄ 字号 评论关闭

利用LayoutInflater infalter = getLayoutInflater();从XML文件中获取Layout的样式。在Menu中也可以采用类似的方式。我们在onCreateOptionsMenu()中如下处理:

[java] view
plain
copy

  1. public boolean onCreateOptionsMenu(Menu menu) {  
  2.         MenuInflater menuInflater = new MenuInflater(getApplication());  
  3.         menuInflater.inflate(R.menu.chapter11_menu, menu);  
  4.         return super.onCreateOptionsMenu(menu);  
  5.     }  

其中我们在res/menu目录下面创建Menu的xml文件chapter11_menu.xml。我们通过下面的例子看看Menu XML文件如何编写:

[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- Menu对应一个Menu的格式 -->  
  3. <menu  xmlns:android="http://schemas.android.com/apk/res/android">  
  4.      <!-- 我们分三种情况进行设置 -->  
  5.      <!-- Part 1 :普通情况,我们增加三个MenuItem,item对应MenuItem的格式。item中的android:id直接就是item的ID,即我们menu.add()中的第二个参数。 -->  
  6.     <item android:id="@+id/c11_close"  
  7.      <!-- title为显示的文字,即menu.add()中的第三个参数的第四个参数,可采用@string/xxx -->  
  8.       android:title="Close"  
  9.      <!-- orderInCategory表明摆放的顺序,不一定从0还是计算,但必须大于等于0,数值小的位于前,如果数值一样,在我们这个例子中3又两个值,则安顺序摆放,此相当于menu.add()中的第三个参数order。当然我们建议从0,1,2,3....这样依次给出,并且与XML行文的顺序一致。 -->  
  10.       android:orderInCategory = "3"  
  11.      <!-- icon设置图标,不言自喻 -->  
  12.       android:icon="@drawable/android_focused" />  
  13.      <item android:id="@+id/c11_no_icon"  
  14.        android:orderInCategory = "2"  
  15.        android:title = "Sans Icon" />  
  16.      <item android:id="@+id/c11_disabled"  
  17.        android:orderInCategory="4"  
  18.        android:enabled="false"  
  19.        android:title="Disabled" />  
  20.      <!-- Part 2 :Group的情况,我们在Group中放入2个item,如果我们要显示3.4的方式,可以增加group的参数android:checkableBehavior来设置,single表示radio box,all表示checkbox,none表示checkable=flase。group中的android:id就是Gourp_ID,即menu.add()中的第一个参数。在这个例子中,我们设置这个group不可视,如果需要显示,代码为:menu.setGroupVisible(R.id.c11_other_stuff, true);-->  
  21.       <group android:id="@+id/c11_other_stuff"  
  22.        <!-- Item由android:orderInCategory来设置item的顺序,在Group中我们可以通过menuCategory来设置另一个category,里面的顺序和default Category是不方在一起比较,例如这里么我们给出0和5,如图所示,在显示完default Category,再显示这个sendonary的内容。 -->  
  23.         android:menuCategory="secondary"  
  24.         android:checkableBehavior="single"  
  25.         android:visible="false" >  
  26.            <item android:id="@+id/c11_later"  
  27.              android:orderInCategory="0"  
  28.              android:title="2nd-To-Last" />  
  29.            <item android:id="@+id/last"  
  30.               android:orderInCategory="5"  
  31.              android:title="Last" />  
  32.      </group>  
  33.      <!-- Part 3 :子menu的设置,将在menuItem内部嵌套一个<Menu>,在这个例子中的子菜单,试验了快捷键的方式 -->  
  34.      <item android:id="@+id/c11_submenu"  
  35.        android:orderInCategory="3"  
  36.        android:title="A submenu" >  
  37.            <menu>  
  38.                <item android:id="@+id/c11_non_ghost"  
  39.                  android:title="Non-Ghost"  
  40.                  android:visible="true"  
  41.                  android:alphabeticShortcut="n" />   
  42.                <item android:id="@+id/c11_ghost"  
  43.                  android:title="Ghost"  
  44.                  android:visible="true"  
  45.                  android:alphabeticShortcut="g" />  
  46.            </menu>  
  47.       </item> <!-- end of Part 3 -->  
  48. </menu>  
【上篇】
【下篇】

抱歉!评论已关闭.