zoukankan      html  css  js  c++  java
  • android menu

    android的菜单有三种:
    Options Menu
      当用户按下menu button按钮时显示的菜单
    Context Menu
      当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
    Submenu
      当用户按下一个菜单的某个选项时弹出的子菜单

    By default, every Activity supports an options menu of actions or options. You can add items to this menu and handle clicks on your additions. The easiest way of adding menu items is inflating an XML file into the Menu via MenuInflater. The easiest way of attaching code to clicks is via onOptionsItemSelected(MenuItem) and onContextItemSelected(MenuItem).

    第一步:编写main.xml文件

    View Code
     1 <?xml version="1.0" encoding="utf-8"?>
    2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3 android:layout_width="fill_parent"
    4 android:layout_height="fill_parent"
    5 android:orientation="vertical" >
    6
    7 <TextView android:id="@+id/TextView01"
    8 android:layout_width="fill_parent"
    9 android:layout_height="wrap_content"
    10 android:text="@string/hello" />
    11
    12 </LinearLayout>

    第二步:编写layoutmenu01.java文件

    View Code
     1 package cn.edu.zwu.tel;
    2
    3 import android.app.Activity;
    4 import android.graphics.Color;
    5 import android.os.Bundle;
    6 import android.view.ContextMenu;
    7 import android.view.Menu;
    8 import android.view.MenuItem;
    9 import android.view.View;
    10 import android.view.ContextMenu.ContextMenuInfo;
    11 import android.widget.TextView;
    12
    13 public class LayoutMenu01Activity extends Activity {
    14 private static final int ITME1 = Menu.FIRST;
    15 private static final int ITME2 = Menu.FIRST+1;
    16 private static final int ITME3 = Menu.FIRST+2;
    17 private TextView myTV;
    18
    19 public void onCreate(Bundle savedInstanceState)
    20 {
    21 super.onCreate(savedInstanceState);
    22 setContentView(R.layout.main);
    23 myTV = (TextView)findViewById(R.id.TextView01);
    24 registerForContextMenu(myTV);
    25 }
    26 //ContextMenu当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
    27 @Override
    28 public void onCreateContextMenu(ContextMenu menu, View v,
    29 ContextMenuInfo menuInfo) {
    30 menu.add(0, ITME1, 0, "红色背景");
    31 menu.add(0, ITME2, 0, "绿色背景");
    32 menu.add(0, ITME3, 0, "白色背景");
    33 }
    34 //选择
    35 @Override
    36 public boolean onContextItemSelected(MenuItem item) {
    37 switch (item.getItemId()) {
    38 case ITME1:
    39 myTV.setBackgroundColor(Color.RED);
    40 break;
    41 case ITME2:
    42 myTV.setBackgroundColor(Color.GREEN);
    43 break;
    44 case ITME3:
    45 myTV.setBackgroundColor(Color.WHITE);
    46 break;
    47 }
    48 return true;
    49 }
    50 }

    效果图:

    还有一种写法:main.xml文件没变,

    View Code
     1 package cn.edu.zwu.tel;
    2
    3 import android.app.Activity;
    4 import android.os.Bundle;
    5 import android.view.ContextMenu;
    6 import android.view.MenuInflater;
    7 import android.view.MenuItem;
    8 import android.view.View;
    9 import android.view.ContextMenu.ContextMenuInfo;
    10 import android.widget.TextView;
    11
    12 public class LayoutMenu02Activity extends Activity {
    13 /** Called when the activity is first created. */
    14 TextView LabelView = null;
    15 @Override
    16 public void onCreate(Bundle savedInstanceState)
    17 {
    18 super.onCreate(savedInstanceState);
    19 setContentView(R.layout.main);
    20 LabelView = (TextView)findViewById(R.id.label);
    21 registerForContextMenu(LabelView);
    22 }
    23 //ContextMenu当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
    24 @Override
    25 public void onCreateContextMenu(ContextMenu menu,
    26 View v, ContextMenuInfo menuInfo)
    27 {
    28
    29 MenuInflater inflater = getMenuInflater();
    30 inflater.inflate(R.menu.context_menu, menu);
    31 }
    32
    33 @Override
    34 public boolean onContextItemSelected(MenuItem item)
    35 {
    36 switch(item.getItemId()){
    37 case R.id.contextMenu1:
    38 LabelView.setText("菜单子项1");
    39 return true;
    40 case R.id.contextMenu2:
    41 LabelView.setText("菜单子项2");
    42 return true;
    43 case R.id.contextMenu3:
    44 LabelView.setText("菜单子项3");
    45 return true;
    46 }
    47 return false;
    48 }
    49
    50 }

    还有的是用Options Menu的方法实现:

    主要代码是

    View Code
     1     /*创建menu*/
    2 public boolean onCreateOptionsMenu(Menu menu)
    3 {
    4 MenuInflater inflater = getMenuInflater();
    5 //设置menu界面为res/menu/menu.xml
    6 inflater.inflate(R.menu.menu, menu);
    7 return true;
    8 }
    9
    10 /*处理菜单事件*/
    11 public boolean onOptionsItemSelected(MenuItem item)
    12 {
    13 //得到当前选中的MenuItem的ID,
    14 int item_id = item.getItemId();
    15
    16 switch (item_id)
    17 {
    18 case R.id.about:
    19 /* 新建一个Intent对象 */
    20 Intent intent = new Intent();
    21 /* 指定intent要启动的类 */
    22 intent.setClass(Activity01.this, Activity02.class);
    23 /* 启动一个新的Activity */
    24 startActivity(intent);
    25 /* 关闭当前的Activity */
    26 Activity01.this.finish();
    27 break;
    28 case R.id.exit:
    29 Activity01.this.finish();
    30 break;
    31 }
    32 return true;
    33 }



  • 相关阅读:
    ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别
    ASP.NET Core 中间件详解及项目实战
    开源项目1:某大学校友管理系统
    web安全浅析
    p2p网贷平台设计简析
    一些常见的并且比较难解决的设计问题
    CentOS 新增swap交换空间
    策略模式
    Centos6.4 本地yum源配置
    Linux(CentOs6.4)安装Git
  • 原文地址:https://www.cnblogs.com/shaoyangjiang/p/2370316.html
Copyright © 2011-2022 走看看