• Android用户界面菜单之子菜单(Sub Menu)


    Android系统为我们提供了丰富的可视化用户界面组件,包括菜单、对话框、按钮、下拉列表等。Android系统借用了Java里的UI设计思想,包括事件响应机制和布局管理。Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础之上。所有的View的子类称为“Widge”,所有ViewGroup的子类称为“Layout”。View和ViewGroup之间采用了组合设计模式(Composite),可以使得“部分-整体”同等对待。ViewGroup作为布局容器类在最上层,布局容器里面又可以有View和ViewGroup。

    菜单的设计在人机交互中可以说是非常人性化的,它提供了不同功能分组展示的能力。Android中菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。 下面我们继续上一篇,讲解子菜单:

    很好理解,子菜单就是讲相同功能的分组进行多级显示的一种菜单,比如,Windows的“文件”菜单中又有“新建”、“打开”、“关闭”等子菜单。Android系统中的子菜单也很多,比如“Setting”(设置)菜单就有其子菜单。创建步骤如下:

    1、覆盖Activity的onCreateOptionMenu()方法,调用Menu的addSubMenu()方法添加子菜单项(Sub Menu)。

    2、调用SubMenu的add()方法,添加子菜单(Sub Menu)。

    3、覆盖onContextItemSelected()方法,添加子菜单单击事件。

    案例:

     

    1. package com.xiaomo.ui;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Menu;  
    6. import android.view.MenuItem;  
    7. import android.view.SubMenu;  
    8.   
    9. import com.example.helloworld.R;  
    10.   
    11. public class Sub_Menu extends Activity {  
    12.       
    13.     private static final int ITEM1 = Menu.FIRST;  
    14.     private static final int ITEM2 = Menu.FIRST+1;  
    15.       
    16.     @Override  
    17.     protected void onCreate(Bundle savedInstanceState) {  
    18.         super.onCreate(savedInstanceState);  
    19.         setContentView(R.layout.activity_main);  
    20.     }  
    21.       
    22.     //覆盖该方法添加子菜单项  
    23.     @Override  
    24.     public boolean onCreateOptionsMenu(Menu menu) {  
    25.         //添加子菜单  
    26.         SubMenu file = menu.addSubMenu("文件");  
    27.         SubMenu edit = menu.addSubMenu("编辑");  
    28.         //为子菜单添加菜单项  
    29.         file.add(0, ITEM1,0,"新建");  
    30.         file.add(0, ITEM2, 0"打开");  
    31.         return true;  
    32.     }  
    33.       
    34.     //覆盖该方法,响应菜单选项被单击事件  
    35.     @Override  
    36.     public boolean onOptionsItemSelected(MenuItem item) {  
    37.         switch (item.getItemId()) {  
    38.         //菜单项1被选择  
    39.         case ITEM1:  
    40.             //设置Activity标题  
    41.             setTitle("新建文件!");  
    42.             break;  
    43.         case ITEM2:  
    44.             setTitle("打开文件!");  
    45.             break;  
    46.         }  
    47.         return true;  
    48.     }  
    49.       
    50.       
    51. }  
  • 相关阅读:
    .Net平台AOP技术概览
    ARP&ICMP
    .NET面向上下文、AOP架构模式(概述)
    Attribute在拦截机制上的应用
    .NET面向上下文、AOP架构模式(实现)
    使用RequireJS优化Web应用前端
    使用asp.net MVC4创建兼容各种设备显示的web应用程序
    entity framework for asp.net mvc
    jquery多功能软键盘插件
    优美登录页面源码(一)
  • 原文地址:https://www.cnblogs.com/haichun/p/3510877.html
Copyright © 2020-2023  润新知