zoukankan      html  css  js  c++  java
  • Android Menus

      1.Options Menu.

       

      通过按下手机上的MENU键,可以打开Options MenuOptions Menu最多只能在屏幕最下面显示6个菜单项,称为Icon Menu.如果添加了多于6个的菜单项,将通过"More"菜单项显示,这种称为Expanded Menu.Options Menu第一次被打开时,系统将调用ActivityonCreateOptionsMenu(Menu menu)方法,在这个方法中可以通过配置一个XML文件,或者调用Menuadd()方法来添加你想要的MenuMenuadd()方法将返回一个MenuItem对象,你用通过这个对象来配置一些其他属性。比如:iconshortcutintentMenuadd()方法很多,要注意的是itemId这个参数,它的唯一性。

       

      当选择了一个Options Menu,会调用onOptionsItemSelected(MenuItem item)方法。如果想修改Options Menu,需要重写onPrepareOptionsMenu()方法。

       

      方式一,用add()添加:

       

      1. /* Creates the menu items */ 
      1. public boolean onCreateOptionsMenu(Menu menu) { 
      1.     menu.add(0, MENU_NEW_GAME, 0, "New Game"); 
      2.     menu.add(0, MENU_QUIT, 0, "Quit").setIcon(R.drawable.menu_quit_icon); 
      1.     return true
      1. } 
      2.  
      1. /* Handles item selections */ 
      1. public boolean onOptionsItemSelected(MenuItem item) { 
      1.     switch (item.getItemId()) { 
      1.     case MENU_NEW_GAME: 
      1.         newGame(); 
      1.         return true
      1.     case MENU_QUIT: 
      1.         quit(); 
      2.         return true
      3.     } 
      1.     return false
      1. } 

       

       

      方式二,通过XML文件添加:

      res/menu/下新建options_menu.xml文件:

       

      Xml代码 

      1. <menu xmlns:android="http://schemas.android.com/apk/res/android"> 
      1.     <item android:id="@+id/new_game" 
      1.           android:title="New Game" /> 
      1.     <item android:id="@+id/quit" 
      2.           android:title="Quit" /> 
      1. </menu> 

       

      onCreateOptionsMenu()方法中,我们这样写:

       

      Java代码 

      1. public boolean onCreateOptionsMenu(Menu menu) { 
      1.     MenuInflater inflater = getMenuInflater(); 
      1.     inflater.inflate(R.menu.options_menu, menu); 
      1.     return true
      1. } 

       

       

      2.Context Menu.

       

      它需要注册到某个View对象上,当长按这个View大概2秒时间,会出现这个Context Menu。为某个View注册Context Menu是用registerForContextMenu(View view)方法来实现。Context Menu在显示前都会调用onCreateContextMenu来生成menuonContextItemSelected用来处理选中的菜单项。

       

      注意:Context Menu不支持iconsshortcut keys.

       

      Java代码 

      1. public void onCreateContextMenu(ContextMenu menu, View v, 
      1.                                 ContextMenuInfo menuInfo) { 
      2.   super.onCreateContextMenu(menu, v, menuInfo); 
      1.   menu.add(0, EDIT_ID, 0, "Edit"); 
      1.   menu.add(0, DELETE_ID, 0"Delete"); 
      2. } 
      3.  
      1. public boolean onContextItemSelected(MenuItem item) { 
      1.   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
      2.   switch (item.getItemId()) { 
      1.   case EDIT_ID: 
      1.     editNote(info.id); 
      1.     return true
      2.   case DELETE_ID: 
      1.     deleteNote(info.id); 
      1.     return true
      1.   default
      1.     return super.onContextItemSelected(item); 
      1.   } 
      1. } 

       

      注册这个Context Menu:

       

      registerForContextMenu(getListView()); 

       

      这里的 getListView()ListActivity的方法,它将返回一个ListView.记住任何一个View对象都可以注册一个Context Menu

       

       

      3.Submenus 

       

      1. public boolean onCreateOptionsMenu(Menu menu) { 
      1.   boolean result = super.onCreateOptionsMenu(menu); 
      1.  
      2.   SubMenu fileMenu = menu.addSubMenu("File"); 
      3.   SubMenu editMenu = menu.addSubMenu("Edit"); 
      4.   fileMenu.add(0,NEW_ID,0,"new"); 
      5.   fileMenu.add(0,OPEN_ID,0,"open"); 
      6.   fileMenu.add(0,SAV_ID,0,"save"); 
      7.   editMenu.add(0,UNDO_ID,0,"undo"); 
      8.   editMenu.add(0,REDO_ID,0,"redo"); 
      9.  
      10.   return result; 
      11. } 

       

       

      4.Menu Features

       

      Menu groups 菜单项分组的功能:

      在用Menuadd()方法时,通过参数groupId的设置可以实现分组。setGroupVisible()用来显示或者隐藏你的菜单组。setGroupEnabled()用来启用或者禁用你的菜单组。setGroupCheckable()用来设置你的菜单项是否可选。 setGroupCheckable()方法有三个参数int group, boolean checkable, boolean exclusive。第一个参数是要设置的组,第二个参数是否可选,第三个参数为true表示单选,false表示多选。

      Shortcut keys 快捷键:

      我们还可以设置快捷键。使用setAlphabeticShortcut(char),setNumericShortcut(int),setShortcut(char,int)可以设置字符,数字,组合(字符+数字)键。注意:Context Menu不能添加快捷键。

       

      参考:http://oldman.javaeye.com/blog/709254

          http://www.ways2u.com/?post=134

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/feisky/p/1776014.html
Copyright © 2011-2022 走看看