• 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 }



  • 相关阅读:
    python 利用正则表达的式提取特定数据如手机号
    python 横向比较最大值 贴标签
    Go语言基础之17--Redis基本操作
    Mysql5.7.20源码编译安装
    Go语言基础之16--Mysql基本操作
    Go语言学习包(1)之bufio包
    Go语言基础之15--文件基本操作
    Go语言基础练习题系列5
    Go语言基础之14--Waitgroup和原子操作
    Go语言基础之13--线程安全及互斥锁和读写锁
  • 原文地址:https://www.cnblogs.com/shaoyangjiang/p/2370316.html
Copyright © 2020-2023  润新知