(转载)Android的三种菜单

目录(?)[+]

本文转载自:http://blog.csdn.net/u010583599/article/details/51605572


Android菜单类型

菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。

选项菜单(OptionMenu

① 创建选项菜单:重写ActivityonCreateOptionMenuMenu menu)方法。

-设置菜单项可用代码动态设置menu.add();

-还可以通过xml设置MenuInflater.inflate();

②设置菜单点击事件:onOptionsItemSelected();

③菜单关闭后发生的动作:onOptionMenuClosed(Menu menu);

④选项菜单显示之前会调用,可以在这里根据需要调整菜单:onPrepareOptionsMenu(Menu menu);

⑤打开后发生的动作。 onMenuOpened(int featureId,Menu menu);

 

方法一:通过xml设置菜单(res/menu/menu.xml

[html]  view plain  copy


  1. <menu xmlns:android=“http://schemas.android.com/apk/res/android”  
  2.     xmlns:tools=“http://schemas.android.com/tools”  
  3.     tools:context=“com.example.menudemo.MenuActivity” >  
  4.    <group android:id=“@+id/group1”>  
  5.      <item  
  6.         android:id=“@+id/action_menu1”  
  7.         android:orderInCategory=“300”  
  8.         android:menuCategory=“container”  
  9.         android:showAsAction=“never”  
  10.         android:title=“menu1”/>  
  11.     <item  
  12.         android:id=“@+id/action_menu2”  
  13.         android:orderInCategory=“200”  
  14.         android:menuCategory=“system”  
  15.         android:showAsAction=“never”  
  16.         android:title=“menu2”/>  
  17.    </group>  
  18.    <group android:id=“@+id/group2”>  
  19.        <item  
  20.         android:id=“@+id/action_menu3”  
  21.         android:orderInCategory=“100”  
  22.         android:menuCategory=“secondary”  
  23.         android:showAsAction=“never”  
  24.         android:title=“menu3”/>  
  25.     <item  
  26.         android:id=“@+id/action_menu4”  
  27.         android:orderInCategory=“400”  
  28.         android:menuCategory=“alternative”  
  29.         android:showAsAction=“never”  
  30.         android:title=“menu4”/>  
  31.    </group>    
  32. </menu>  

<item>标签的属性含义解释:

属性名

作用

menuCategory

设置菜单项的种类。有四个可选值:Containersystemsecondaryalternative。通过menuCategory属性可以控制菜单项的位置。

orderInCategory

同类菜单的排列顺序,为整数值,值越大显示越靠前。

titleCondensed

菜单项的短标题。当菜单文字太长时显示这个

alphabeticShortcut

菜单项的字母快捷键。

showAsAction

Never:总是显示在移除菜单中。

Always:显示在ActionBar上。

ifRoom:如果actionBar空间足够就显示在ActionBar上。

withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。

collapseActionView:

<item android:id=”@+id/menu_search”
       android:title=”@string/menu_search”
       android:icon=”@drawable/ic_menu_search”

          android:showAsAction=”ifRoom|collapseActionView”

           android:actionViewClass=”android.widget.SearchView” />

android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

参考链接:http://blog.csdn.NET/think_soft/article/details/7370686

<group>标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。

Activity里加载菜单

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         // Inflate the menu; this adds items to the action bar if it is present.  
  4.         getMenuInflater().inflate(R.menu.menu, menu);  
  5.         return true;  
  6.     }  

方法二:通过代码添加menu

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         //调用这个方法设置图标的可见性  
  4.         setIconVisible(menu);  
  5.         /* 
  6.          * add()方法的四个参数,依次是: 
  7.          * 1、组别,如果不分组的话就写Menu.NONE, 
  8.          * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 
  9.          * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前 
  10.          * 4、文本,菜单的显示文本 
  11.          */  
  12.         menu.add(Menu.NONE, Menu.FIRST + 15“删除”).setIcon(  
  13.         android.R.drawable.ic_menu_delete);  
  14.         // setIcon()方法设置菜单图标  
  15.         menu.add(Menu.NONE, Menu.FIRST + 22“保存”).setIcon(  
  16.         android.R.drawable.ic_menu_save);  
  17.         menu.add(Menu.NONE, Menu.FIRST + 36“帮助”).setIcon(  
  18.         android.R.drawable.ic_menu_help);  
  19.         menu.add(Menu.NONE, Menu.FIRST + 41“添加”).setIcon(  
  20.         android.R.drawable.ic_menu_add);  
  21.         menu.add(Menu.NONE, Menu.FIRST + 54“详细”).setIcon(  
  22.         android.R.drawable.ic_menu_info_details);  
  23.         menu.add(Menu.NONE, Menu.FIRST + 63“发送”).setIcon(  
  24.         android.R.drawable.ic_menu_send);  
  25.         return true;  
  26. }  
  27. //使用反射设置menu图标的可见性  
  28.     private void setIconVisible(Menu menu) {  
  29.         try {  
  30.             Class clazz = Class  
  31.                     .forName(”com.android.internal.view.menu.MenuBuilder”);  
  32.             Method m = clazz.getDeclaredMethod(”setOptionalIconsVisible”,  
  33.                     boolean.class);  
  34.             m.setAccessible(true);  
  35.             m.invoke(menu, true);  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  

菜单显示效果如下图:

选项菜单设置点击监听

[java]  view plain  copy


  1. @Override  
  2.     public boolean onOptionsItemSelected(MenuItem item) {  
  3.         Log.i(TAG, ”onOptionsItemSelected”);  
  4.         int id = item.getItemId();  
  5.         switch (id) {  
  6.         case Menu.FIRST+1:  
  7.             Toast.makeText(MenuActivity.this“点击了删除按钮”, Toast.LENGTH_SHORT).show();  
  8.             break;  
  9.         default:  
  10.             break;  
  11.         }  
  12.         return super.onOptionsItemSelected(item);  
  13.     }  

上下文菜单

当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。

 

创建上下文菜单的步骤:

① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv

registerForcontextMenu(tv);

[java]  view plain  copy





  1. @Override  

  2.     protected void

目录(?)[+]

本文转载自:http://blog.csdn.net/u010583599/article/details/51605572


Android菜单类型

菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。

选项菜单(OptionMenu

① 创建选项菜单:重写ActivityonCreateOptionMenuMenu menu)方法。

-设置菜单项可用代码动态设置menu.add();

-还可以通过xml设置MenuInflater.inflate();

②设置菜单点击事件:onOptionsItemSelected();

③菜单关闭后发生的动作:onOptionMenuClosed(Menu menu);

④选项菜单显示之前会调用,可以在这里根据需要调整菜单:onPrepareOptionsMenu(Menu menu);

⑤打开后发生的动作。 onMenuOpened(int featureId,Menu menu);

 

方法一:通过xml设置菜单(res/menu/menu.xml

[html]  view plain  copy


  1. <menu xmlns:android=“http://schemas.android.com/apk/res/android”  
  2.     xmlns:tools=“http://schemas.android.com/tools”  
  3.     tools:context=“com.example.menudemo.MenuActivity” >  
  4.    <group android:id=“@+id/group1”>  
  5.      <item  
  6.         android:id=“@+id/action_menu1”  
  7.         android:orderInCategory=“300”  
  8.         android:menuCategory=“container”  
  9.         android:showAsAction=“never”  
  10.         android:title=“menu1”/>  
  11.     <item  
  12.         android:id=“@+id/action_menu2”  
  13.         android:orderInCategory=“200”  
  14.         android:menuCategory=“system”  
  15.         android:showAsAction=“never”  
  16.         android:title=“menu2”/>  
  17.    </group>  
  18.    <group android:id=“@+id/group2”>  
  19.        <item  
  20.         android:id=“@+id/action_menu3”  
  21.         android:orderInCategory=“100”  
  22.         android:menuCategory=“secondary”  
  23.         android:showAsAction=“never”  
  24.         android:title=“menu3”/>  
  25.     <item  
  26.         android:id=“@+id/action_menu4”  
  27.         android:orderInCategory=“400”  
  28.         android:menuCategory=“alternative”  
  29.         android:showAsAction=“never”  
  30.         android:title=“menu4”/>  
  31.    </group>    
  32. </menu>  

<item>标签的属性含义解释:

属性名

作用

menuCategory

设置菜单项的种类。有四个可选值:Containersystemsecondaryalternative。通过menuCategory属性可以控制菜单项的位置。

orderInCategory

同类菜单的排列顺序,为整数值,值越大显示越靠前。

titleCondensed

菜单项的短标题。当菜单文字太长时显示这个

alphabeticShortcut

菜单项的字母快捷键。

showAsAction

Never:总是显示在移除菜单中。

Always:显示在ActionBar上。

ifRoom:如果actionBar空间足够就显示在ActionBar上。

withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。

collapseActionView:

<item android:id=”@+id/menu_search”
       android:title=”@string/menu_search”
       android:icon=”@drawable/ic_menu_search”

          android:showAsAction=”ifRoom|collapseActionView”

           android:actionViewClass=”android.widget.SearchView” />

android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

参考链接:http://blog.csdn.NET/think_soft/article/details/7370686

<group>标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。

Activity里加载菜单

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         // Inflate the menu; this adds items to the action bar if it is present.  
  4.         getMenuInflater().inflate(R.menu.menu, menu);  
  5.         return true;  
  6.     }  

方法二:通过代码添加menu

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         //调用这个方法设置图标的可见性  
  4.         setIconVisible(menu);  
  5.         /* 
  6.          * add()方法的四个参数,依次是: 
  7.          * 1、组别,如果不分组的话就写Menu.NONE, 
  8.          * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 
  9.          * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前 
  10.          * 4、文本,菜单的显示文本 
  11.          */  
  12.         menu.add(Menu.NONE, Menu.FIRST + 15“删除”).setIcon(  
  13.         android.R.drawable.ic_menu_delete);  
  14.         // setIcon()方法设置菜单图标  
  15.         menu.add(Menu.NONE, Menu.FIRST + 22“保存”).setIcon(  
  16.         android.R.drawable.ic_menu_save);  
  17.         menu.add(Menu.NONE, Menu.FIRST + 36“帮助”).setIcon(  
  18.         android.R.drawable.ic_menu_help);  
  19.         menu.add(Menu.NONE, Menu.FIRST + 41“添加”).setIcon(  
  20.         android.R.drawable.ic_menu_add);  
  21.         menu.add(Menu.NONE, Menu.FIRST + 54“详细”).setIcon(  
  22.         android.R.drawable.ic_menu_info_details);  
  23.         menu.add(Menu.NONE, Menu.FIRST + 63“发送”).setIcon(  
  24.         android.R.drawable.ic_menu_send);  
  25.         return true;  
  26. }  
  27. //使用反射设置menu图标的可见性  
  28.     private void setIconVisible(Menu menu) {  
  29.         try {  
  30.             Class clazz = Class  
  31.                     .forName(”com.android.internal.view.menu.MenuBuilder”);  
  32.             Method m = clazz.getDeclaredMethod(”setOptionalIconsVisible”,  
  33.                     boolean.class);  
  34.             m.setAccessible(true);  
  35.             m.invoke(menu, true);  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  

菜单显示效果如下图:

选项菜单设置点击监听

[java]  view plain  copy


  1. @Override  
  2.     public boolean onOptionsItemSelected(MenuItem item) {  
  3.         Log.i(TAG, ”onOptionsItemSelected”);  
  4.         int id = item.getItemId();  
  5.         switch (id) {  
  6.         case Menu.FIRST+1:  
  7.             Toast.makeText(MenuActivity.this“点击了删除按钮”, Toast.LENGTH_SHORT).show();  
  8.             break;  
  9.         default:  
  10.             break;  
  11.         }  
  12.         return super.onOptionsItemSelected(item);  
  13.     }  

上下文菜单

当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。

 

创建上下文菜单的步骤:

① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv

registerForcontextMenu(tv);

[java]  view plain  copy





  1. @Override  

  2.     protected void

本文转载自:http://blog.csdn.net/u010583599/article/details/51605572


Android菜单类型

菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。

选项菜单(OptionMenu

① 创建选项菜单:重写ActivityonCreateOptionMenuMenu menu)方法。

-设置菜单项可用代码动态设置menu.add();

-还可以通过xml设置MenuInflater.inflate();

②设置菜单点击事件:onOptionsItemSelected();

③菜单关闭后发生的动作:onOptionMenuClosed(Menu menu);

④选项菜单显示之前会调用,可以在这里根据需要调整菜单:onPrepareOptionsMenu(Menu menu);

⑤打开后发生的动作。 onMenuOpened(int featureId,Menu menu);

 

方法一:通过xml设置菜单(res/menu/menu.xml

[html]  view plain  copy


  1. <menu xmlns:android=“http://schemas.android.com/apk/res/android”  
  2.     xmlns:tools=“http://schemas.android.com/tools”  
  3.     tools:context=“com.example.menudemo.MenuActivity” >  
  4.    <group android:id=“@+id/group1”>  
  5.      <item  
  6.         android:id=“@+id/action_menu1”  
  7.         android:orderInCategory=“300”  
  8.         android:menuCategory=“container”  
  9.         android:showAsAction=“never”  
  10.         android:title=“menu1”/>  
  11.     <item  
  12.         android:id=“@+id/action_menu2”  
  13.         android:orderInCategory=“200”  
  14.         android:menuCategory=“system”  
  15.         android:showAsAction=“never”  
  16.         android:title=“menu2”/>  
  17.    </group>  
  18.    <group android:id=“@+id/group2”>  
  19.        <item  
  20.         android:id=“@+id/action_menu3”  
  21.         android:orderInCategory=“100”  
  22.         android:menuCategory=“secondary”  
  23.         android:showAsAction=“never”  
  24.         android:title=“menu3”/>  
  25.     <item  
  26.         android:id=“@+id/action_menu4”  
  27.         android:orderInCategory=“400”  
  28.         android:menuCategory=“alternative”  
  29.         android:showAsAction=“never”  
  30.         android:title=“menu4”/>  
  31.    </group>    
  32. </menu>  

<item>标签的属性含义解释:

属性名

作用

menuCategory

设置菜单项的种类。有四个可选值:Containersystemsecondaryalternative。通过menuCategory属性可以控制菜单项的位置。

orderInCategory

同类菜单的排列顺序,为整数值,值越大显示越靠前。

titleCondensed

菜单项的短标题。当菜单文字太长时显示这个

alphabeticShortcut

菜单项的字母快捷键。

showAsAction

Never:总是显示在移除菜单中。

Always:显示在ActionBar上。

ifRoom:如果actionBar空间足够就显示在ActionBar上。

withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。

collapseActionView:

<item android:id=”@+id/menu_search”
       android:title=”@string/menu_search”
       android:icon=”@drawable/ic_menu_search”

          android:showAsAction=”ifRoom|collapseActionView”

           android:actionViewClass=”android.widget.SearchView” />

android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

参考链接:http://blog.csdn.NET/think_soft/article/details/7370686

<group>标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。

Activity里加载菜单

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         // Inflate the menu; this adds items to the action bar if it is present.  
  4.         getMenuInflater().inflate(R.menu.menu, menu);  
  5.         return true;  
  6.     }  

方法二:通过代码添加menu

[java]  view plain  copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.         //调用这个方法设置图标的可见性  
  4.         setIconVisible(menu);  
  5.         /* 
  6.          * add()方法的四个参数,依次是: 
  7.          * 1、组别,如果不分组的话就写Menu.NONE, 
  8.          * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 
  9.          * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前 
  10.          * 4、文本,菜单的显示文本 
  11.          */  
  12.         menu.add(Menu.NONE, Menu.FIRST + 15“删除”).setIcon(  
  13.         android.R.drawable.ic_menu_delete);  
  14.         // setIcon()方法设置菜单图标  
  15.         menu.add(Menu.NONE, Menu.FIRST + 22“保存”).setIcon(  
  16.         android.R.drawable.ic_menu_save);  
  17.         menu.add(Menu.NONE, Menu.FIRST + 36“帮助”).setIcon(  
  18.         android.R.drawable.ic_menu_help);  
  19.         menu.add(Menu.NONE, Menu.FIRST + 41“添加”).setIcon(  
  20.         android.R.drawable.ic_menu_add);  
  21.         menu.add(Menu.NONE, Menu.FIRST + 54“详细”).setIcon(  
  22.         android.R.drawable.ic_menu_info_details);  
  23.         menu.add(Menu.NONE, Menu.FIRST + 63“发送”).setIcon(  
  24.         android.R.drawable.ic_menu_send);  
  25.         return true;  
  26. }  
  27. //使用反射设置menu图标的可见性  
  28.     private void setIconVisible(Menu menu) {  
  29.         try {  
  30.             Class clazz = Class  
  31.                     .forName(”com.android.internal.view.menu.MenuBuilder”);  
  32.             Method m = clazz.getDeclaredMethod(”setOptionalIconsVisible”,  
  33.                     boolean.class);  
  34.             m.setAccessible(true);  
  35.             m.invoke(menu, true);  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.         }  
  39.     }  

菜单显示效果如下图:

选项菜单设置点击监听

[java]  view plain  copy


  1. @Override  
  2.     public boolean onOptionsItemSelected(MenuItem item) {  
  3.         Log.i(TAG, ”onOptionsItemSelected”);  
  4.         int id = item.getItemId();  
  5.         switch (id) {  
  6.         case Menu.FIRST+1:  
  7.             Toast.makeText(MenuActivity.this“点击了删除按钮”, Toast.LENGTH_SHORT).show();  
  8.             break;  
  9.         default:  
  10.             break;  
  11.         }  
  12.         return super.onOptionsItemSelected(item);  
  13.     }  

上下文菜单

当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。

 

创建上下文菜单的步骤:

① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv

registerForcontextMenu(tv);

[java]  view plain  copy





  1. @Override  

  2.     protected void

猜你喜欢

转载自blog.csdn.net/fjnu_se/article/details/80880877