zoukankan      html  css  js  c++  java
  • Android_文档学习_UI_creating menus

    Creating Menus

    android 菜单包括三种.Options Menu , Context Menu   和Submenu.

    本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 ,

    1.Options Menu(选项菜单)
    hi
    @方法1   
    需要重写public boolean onCreateOptionsMenu(Menu menu)和
    public boolean onOptionsItemSelected(MenuItem item)方法,
    可用如下代码,添加menuitem

    [java] view plaincopy

    1. @Override
    2. public boolean onOptionsItemSelected(MenuItem item) { 
    3. // TODO Auto-generated method stub
    4. switch(item.getItemId()) { 
    5. case 1://id可以是用menu.add方法生成的数字,也可是用xml文件生成的R.id.XX
    6.             System.out.println("new clicked"); 
    7. return true; 
    8.         } 
    9. return super.onOptionsItemSelected(item); 
    10.     } 
    11. @Override
    12. public boolean onCreateOptionsMenu(Menu menu) { 
    13. // TODO Auto-generated method stub
    14.         menu.add(0, 1, 1, "new"); 
    15.         menu.add(0, 2, 2, "open"); 
    16.         menu.add(0, 3, 3, "close"); 
    17.         menu.add(0, 4, 4, "start"); 
    18.         menu.add(0, 5, 5, "about"); 
    19.         menu.add(0, 6, 6, "restart"); 
    20.         menu.add(0, 7, 7, "reopen"); 
    21.         SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单"); 
    22.         Resources res = getBaseContext().getResources(); 
    23.         sub.setIcon(res.getDrawable(R.drawable.icon)); 
    24.         sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); 
    25.         sub.add(1, 3, 0, "Menu A1"); 
    26.         sub.add(1, 4, 1, "Menu A2"); 
    27. return super.onCreateOptionsMenu 


    @方法2
    在xml文件中定义好

    [xhtml] view plaincopy

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <menu xmlns:android="http://schemas.android.com/apk/res/android">
    3. <item android:id="@+id/new_game"
    4. android:icon="@drawable/ic_new_game"
    5. android:title="@string/new_game" />
    6. <item android:id="@+id/quit"
    7. android:icon="@drawable/ic_quit"
    8. android:title="@string/quit" />
    9. </menu>

    并在java文件中.调用如下方法

    [java] view plaincopy

    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu) { 
    3.     MenuInflater inflater = getMenuInflater(); 
    4.     inflater.inflate(R.menu.game_menu, menu); 
    5. return true; 




    2.Context Menu(上下文菜单,类似windows下的右键菜单)
    hi
    (有点类似android中的dialog对话框.)

    一般,contextMenu多用于ListView 视图中,当用户持续按住一个listItem的时候.就可以弹出ContextMenu来.并执行需要的功能.
    可用如下代码生成contextMenu:
    并需要调用registerForContextMenu()对contextMenu进行注册;

    [java] view plaincopy

    1. @Override
    2. public void onCreateContextMenu(ContextMenu menu, View v, 
    3.             ContextMenuInfo menuInfo) { 
    4. // TODO Auto-generated method stub
    5.         menu.setHeaderTitle("ContextMenu");    
    6.         menu.add(0, 0, 0, "contextMenuItem 0"); 
    7.         menu.add(0, 1, 0, "contextMenuItem 1");   
    8. super.onCreateContextMenu(menu, v, menuInfo); 
    9.     } 
    10. //长按菜单响应函数
    11. @Override
    12. public boolean onContextItemSelected(MenuItem item) { 
    13.         setTitle("contextMenuItem"+item.getItemId()+"Clicked");  
    14. return super.onContextItemSelected(item); 
    15.     } 

    我在网上发现另一种不用调用 registerForContextMenu()的方法代码如下:

    [java] view plaincopy

    1. list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 
    2. @Override
    3. public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
    4.                 menu.setHeaderTitle("ContextMenu");    
    5.                 menu.add(0, 0, 0, "contextMenuItem0"); 
    6.                 menu.add(0, 1, 0, "contextMenuItem1");    
    7.             } 
    8.         }); 

    直接将list绑定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
    接口并在其中用匿名类写相应的代码.


    3.Submenu(子菜单,类似windows下,右键菜单中,黑色三角形指向的菜单)


    he
    当然也可以用两种方式生成.一种是通过xml文件,一种是java中直接写代码.
    android的文档中,只是简单的描述了下,用xml文件设的子菜单.

    我用的后一种方法.代码如下:

    [java] view plaincopy

    1. @Override
    2. public boolean onCreateOptionsMenu(Menu menu) { 
    3. // TODO Auto-generated method stub
    4.     SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单"); 
    5.     Resources res = getBaseContext().getResources(); 
    6.     sub.setIcon(res.getDrawable(R.drawable.icon)); 
    7.     sub.setHeaderIcon(res.getDrawable(R.drawable.icon)); 
    8.     sub.add(1, 3, 0, "Menu A1"); 
    9.     sub.add(1, 4, 1, "Menu A2"); 
    10. return super.onCreateOptionsMenu(menu); 



    菜单选项还有许多其他的特性.
    包括,menu Groups,将按钮分组,菜单分组,可以方便的将组中的菜单visiable属性,Enable属性,checkable属性,一齐改变.

    包括 Checkable menu items,用类似checkbox的属性或者radiobutton的属性.

    包括Shortcut keys(快捷键),

    包括intent for menu items(android中用于activity间传输数据的一种方式).

    包括Dynamically adding Intents(动态增加intent).

    包括Allowing your Activity to be added to menus(允许activty被增加到多个菜单项中)等.



    本文完整代码CSDN下载频道:http://download.csdn.net/source/2900952 ,
    由于小生初学android,好多问题都是一知半解.希望看到本文的同学.能够多多支持.并增加交流.
  • 相关阅读:
    kafka学习默认端口号9092
    kafka搜索介绍
    进程线程区别
    linux下的mysql修改默认编码
    [LeetCode] #19 Remove Nth Node From End of List
    [LeetCode] #18 4Sum
    [LeetCode] #17 Letter Combinations of a Phone Number
    [LeetCode] #16 3Sum Closest
    编程之美2015 #1 2月29日
    编程之美2015 #2 回文字符序列
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/3117994.html
Copyright © 2011-2022 走看看