zoukankan      html  css  js  c++  java
  • 安卓开发_浅谈OptionsMenus(选项菜单)

    Android平台下所提供的菜单大体上可分为三类:选项菜单、上下文菜单和子菜单。

    当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单。但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的。

    这里就先学习 选项菜单OptionsMenus

    创建选项菜单有两种方式

    一、xml文件静态创建

     7 package information;
     8 
     9 import com.example.allcode.R;
    10 
    11 import android.app.Activity;
    12 import android.content.Intent;
    13 import android.os.Bundle;
    14 import android.view.Menu;
    15 import android.view.MenuItem;
    16 import android.widget.Toast;
    17 
    18 public class OptionMenus_text extends Activity{
    19     @Override
    20     protected void onCreate(Bundle savedInstanceState) {
    21         // TODO Auto-generated method stub
    22         super.onCreate(savedInstanceState);
    23         setContentView(R.layout.optionmenus);
    24         
    25     }
    26 
    27     
    28     @Override
    29     public boolean onCreateOptionsMenu(Menu menu) {
    30         // TODO Auto-generated method stub
    31         //一、xml的形式静态添加菜单项    
    32         getMenuInflater().inflate(R.menu.main,menu);
    33         
    34         return true;
    35         
    36     }
    37     
    38     //点击事件
    39     
    40     @Override
    41     public boolean onOptionsItemSelected(MenuItem item) {
    42         // TODO Auto-generated method stub
    43         //根据菜单项id执行响应事件
    44         switch (item.getItemId()) {
    45         //静态菜单 判断Id 
    46          case R.id.action_menu_1:
    47              Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
    48              break;
    49          case R.id.action_menu_2:
    50              Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();
    51 
    52     
    53 
    54         default:
    55             break;
    56         }
    57         
    58         return super.onOptionsItemSelected(item);
    59     
    60     }
    61 }
    32         getMenuInflater().inflate(R.menu.main,menu);
    看这一行代码,

    我们找到其对应的文件

    main.xml文件代码如下:

     1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
     2 
     3     <item
     4         android:id="@+id/action_menu_1"
     5         android:orderInCategory="100"
     6         android:showAsAction="never"
     7         android:title="菜单一"/>
     8     <item
     9         android:id="@+id/action_menu_2"
    10         android:orderInCategory="100"
    11         android:showAsAction="never"
    12         android:title="菜单二"/>
    13 
    14 </menu>

    可以看到两个菜单项,看下菜单项的各个属性:

    1、 android:id=   
    是菜单项id
    2、android:orderInCategory=
    是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中
    3、android:showAsAction=

      原来是特定版本用到的,当你的应用程序目标设为蜂巢平台(即 Android 3.0)时,你可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角,  对用户来说使用更方便,控制该行为的主菜单项属性是android:showAsAction。 这个属性可接受的值有:

        1.alaways:这个值会使菜单项一直显示在ActionBar上。

        2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。

        3.never:这个值菜单永远不会出现在ActionBar是。

        4.withText:这个值使菜单和它的图标,菜单文本一起显示。

    4、android:title=
    是菜单项名字


    二、动态创建选项菜单

     1 package information;
     2 
     3 import com.example.allcode.R;
     4 
     5 import android.app.Activity;
     6 import android.content.Intent;
     7 import android.os.Bundle;
     8 import android.view.Menu;
     9 import android.view.MenuItem;
    10 import android.widget.Toast;
    11 
    12 public class OptionMenus_text extends Activity{
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         // TODO Auto-generated method stub
    16         super.onCreate(savedInstanceState);
    17         setContentView(R.layout.optionmenus);
    18         
    19     }
    20 
    21     
    22     @Override
    23     public boolean onCreateOptionsMenu(Menu menu) {
    24         // TODO Auto-generated method stub
    25         
    26         //二、动态添加菜单项
    27         MenuItem item = menu.add(1, 100, 1, "菜单一");
    28 //第一个参数:用来分组的id,第二个参数:菜单项的id,第三个参数:排序,第四个参数:菜单项文字描述
    29         item.setTitle("标题");
    30         item.setIcon(R.drawable.icon_72);//api>=11不显示图片
    31         menu.add(1, 101, 1, "菜单二");
    32         menu.add(1, 102, 1, "菜单三");
    33         menu.add(1, 103, 1, "菜单四");
    34         return true;
    35         
    36     }
    37     
    38     //点击事件
    39     
    40     @Override
    41     public boolean onOptionsItemSelected(MenuItem item) {
    42         // TODO Auto-generated method stub
    43         //根据菜单项id执行响应事件
    44         switch (item.getItemId()) {
    45 
    46 
    47         //动态菜单判断Id,id为第二个参数
    48         case 100: 
    49             Toast.makeText(OptionMenus_text.this, "点击了菜单一", 1).show();
    50             break;
    51         case 101:
    52             Toast.makeText(OptionMenus_text.this, "点击了菜单二", 1).show();
    53             break;
    54         case 102:
    55             Toast.makeText(OptionMenus_text.this, "点击了菜单三", 1).show();
    56             break;
    57         case 103:
    58             Intent intent = new Intent();
    59             intent.setClass(this, AlertDialog_text.class);
    60             item.setIntent(intent); //菜单项创建activity的方法
    61             break;
    62 
    63         default:
    64             break;
    65         }
    66         
    67         return super.onOptionsItemSelected(item);
    68     
    69     }
    70 }

    效果图:



  • 相关阅读:
    C# 缓存介绍与演示(转)
    sql server 2005中表的数据与excel互相导入导出的方法
    java.exe,javac.exe,javaw.exe,jar,javadoc 区别
    C# 装箱和拆箱、理论概念(非原创)
    Maven概述(非原创)
    理解java String(非原创)
    JVM JRE JDK区别于联系(非原创)
    LINQ to SQL与LINQ to Entities场景之对照(非原创)
    J2EE系统开发环境配置
    ASP.NET MVC 拦截器(转)
  • 原文地址:https://www.cnblogs.com/xqxacm/p/4561272.html
Copyright © 2011-2022 走看看