• Android菜单实现两种方式


    结果如下:

    第一种编程方式:

    Java代码  收藏代码
    1. package com.easyway.android.menu;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Menu;  
    6. import android.view.MenuItem;  
    7. import android.widget.TextView;  
    8. /** 
    9.  * Android菜单实现功能 
    10.  * @author longgangbai 
    11.  * 
    12.  */  
    13. public class AndroidMenuActivity extends Activity {  
    14.     private TextView textView;  
    15.       
    16.     /** Called when the activity is first created. */  
    17.     @Override  
    18.     public void onCreate(Bundle savedInstanceState) {  
    19.         super.onCreate(savedInstanceState);  
    20.         setContentView(R.layout.main);  
    21.           
    22.         textView=(TextView)findViewById(R.id.txtview);  
    23.            
    24.     }  
    25.       
    26.     /** 
    27.      * 创建一个上下文可选菜单 
    28.      */  
    29.     @Override  
    30.     public boolean onCreateOptionsMenu(Menu menu) {  
    31.         super.onCreateOptionsMenu(menu);  
    32.           
    33.         menu.add(0, Menu.FIRST, Menu.NONE, "编辑");  
    34.         menu.add(0, Menu.FIRST + 1, Menu.NONE, "保存");  
    35.         menu.add(0, Menu.FIRST + 2, Menu.NONE, "删除");  
    36.         return true;  
    37.     }  
    38.       
    39.     @Override  
    40.     public boolean onOptionsItemSelected(MenuItem item) {  
    41.         super.onOptionsItemSelected(item);  
    42.         switch (item.getItemId()) {  
    43.         //获取菜单项的ID,即前面Menu.add方法的第二个参数  
    44.         case Menu.FIRST:  
    45.             textView.setText("编辑");  
    46.             break;  
    47.         case Menu.FIRST + 1:  
    48.             textView.setText("保存");  
    49.             break;  
    50.         case Menu.FIRST + 2:  
    51.             textView.setText("删除");  
    52.             break;  
    53.         default:  
    54.             break;  
    55.         }  
    56.         return true;  
    57.     }  
    58. }  

    第二种方式声明方式:

    res/menu/menu.xml

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
    3.     <item android:title="保存" android:id="@+id/ID_SAVE"></item>  
    4.     <item android:title="编辑" android:id="@+id/ID_EDIT"></item>  
    5.     <item android:title="删除" android:id="@+id/ID_DELETE"></item>  
    6. </menu>  

    实现为:

    Java代码  收藏代码
    1. package com.easyway.android.mens;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Menu;  
    6. import android.view.MenuInflater;  
    7. import android.view.MenuItem;  
    8. import android.widget.TextView;  
    9. /** 
    10.  * Android菜单实现功能 
    11.  *  
    12.  * Android程序使用菜单是非常之方便的,而且Android系统的菜单也做得很有特色,系统有专门的Menu键, 
    13.  * 而且菜单的样式不同于通常的弹出或者下拉菜单,Android的菜单更像是堆砌起来的。 
    14.  *Menu是android.view包里面的接口,它菜单通常是作为Activity的一部分。 
    15.  * 
    16.  *在Android的文档里面这样描述Menu: 
    17.  *  通常,每个Activity都支持(这里意思应该是已经创建好,默认存在菜单)一个选项菜单 
    18.  *  (option menu)和相应的事件响应。可以为菜单添加菜单项和相应的事件处理。添加菜单项最简 
    19.  *  单的方法是是使用XML文件,在Menu标签下使用 MenuInflater,然后重载Activity的 
    20.  *  onOptionsItemSelected(MenuItem) 方法或者onContextItemSelected(MenuItem) 方法, 
    21.  *  在方法体里添加事件处理代码。 
    22.  *   
    23.  *  总的来说,有三种类型的菜单:  
    24.  *      Contex Menus,情境菜单:不支持菜单快捷键和图标。  
    25.  *      Options Menus,选项菜单:支持图标,但不支持菜单项选中标记。  
    26.  *      Sub menus,子菜单,不支持图标,不能再有子菜单。  
    27.  * @author longgangbai 
    28.  * 
    29.  */  
    30. public class AndroidXmlMenuActivity extends Activity {  
    31.   
    32.   
    33.         private TextView textView;  
    34.           
    35.         /** Called when the activity is first created. */  
    36.         @Override  
    37.         public void onCreate(Bundle savedInstanceState) {  
    38.             super.onCreate(savedInstanceState);  
    39.             setContentView(R.layout.main);  
    40.               
    41.             textView=(TextView)findViewById(R.id.txtview);  
    42.                
    43.         }  
    44.           
    45.         /** 
    46.          * 创建一个上下文可选菜单 
    47.          * Menu.add(int groupId, int itemId, int order, CharSequence title)方法, 
    48.          * 第一个参数用来指定菜单项分组,API文档说分组可以用来进行分组状态更新, 
    49.          * 第二个参数很重要,是菜单项的唯一ID,在后面菜单事件处理时要用到, 
    50.          * 第三个参数为排序值,用来指定菜单项顺序,可以无视, 
    51.          * 最后一个参数为菜单项的标题,在屏幕上面显示用。 
    52.          *  
    53.          * 另一种方式是使用XML文件和MenuInflater类来创建菜单。Android使用XML作为 
    54.          * 资源管理的方式,独立于编码,具有更高的灵活性和扩展性。在res下面建立menu 
    55.          * 文件夹,然后新建一个xml文档,命名为menu.xml。 
    56.          *  
    57.          */  
    58.         @Override  
    59.         public boolean onCreateOptionsMenu(Menu menu) {  
    60.             super.onCreateOptionsMenu(menu);  
    61.             //创建获取菜单的布局的对象  
    62.             MenuInflater menuInflater=new MenuInflater(this);  
    63.             //向菜单中添加菜单  
    64.             menuInflater.inflate(  
    65.                     R.menu.menu, //位于res/memnu下的菜单xml文件配置   
    66.                     menu  //需要添加的父菜单对象  
    67.                     );  
    68.             return true;  
    69.         }  
    70.         /** 
    71.          * 各个菜单的 响应时间的实现 
    72.          *  
    73.          */  
    74.         @Override  
    75.         public boolean onOptionsItemSelected(MenuItem item) {  
    76.             super.onOptionsItemSelected(item);  
    77.             switch (item.getItemId()) {  
    78.             //获取菜单项的ID,即前面Menu.add方法的第二个参数  
    79.             case R.id.ID_EDIT:  
    80.                 textView.setText("编辑");  
    81.                 break;  
    82.             case R.id.ID_SAVE:  
    83.                 textView.setText("保存");  
    84.                 break;  
    85.             case R.id.ID_DELETE:  
    86.                 textView.setText("删除");  
    87.                 break;  
    88.             default:  
    89.                 break;  
    90.             }  
    91.             return true;  
    92.         }  
    93.     } 
  • 相关阅读:
    Misc1
    PXE
    VCL
    pacman usage
    .vimrc的配置
    Windows Server 2012 R2
    Windows 入门杂乱无章版
    VS Code Plugins And Configuration
    「Poetize5」GF弹钢琴
    「Poetize4」上帝造题的七分钟2
  • 原文地址:https://www.cnblogs.com/shihao/p/2323695.html
Copyright © 2020-2023  润新知