Android menu+ anctionbar

一、概述

     Menu,简单来理解就是当你按下手机的“menu”键时所弹出来的窗体,它被广泛应用着,差点儿在每一个应用中都有它的身影。


二、要求

    用两种方式实现菜单功能。


三、实现

     新建projectMyMenu,改动/res/layout/main.xml文件,主要是改动了里面的TextView,完整的main.xml文件例如以下:

复制代码
 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
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="这是一个菜单測试程序"
11 android:gravity="center_horizontal"
12 />
13
14 </LinearLayout>

复制代码

接着。改动MyMenuActivity.java文件,主要是覆写了onCreateOptionsMenu()和onOptionsItemSelected()这两个方法,在onCreateOptionsMenu()方法里添加7个选项。比較简单。完整的内容例如以下:

 

复制代码
 1 package com.nan.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.Toast;
8
9 public class MyMenuActivity extends Activity
10 {
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState)
14 {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.main);
17
18 }
19
20 @Override
21 //当"menu"button被按下时运行这个函数
22 public boolean onCreateOptionsMenu(Menu menu)
23 {
24 menu.add(0, 0, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
25 menu.add(0, 1, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
26 menu.add(0, 2, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
27 menu.add(0, 3, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
28 menu.add(0, 4, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
29 menu.add(0, 5, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
30 menu.add(0, 6, Menu.NONE, "菜单").setIcon(android.R.drawable.btn_star);
31
32 return super.onCreateOptionsMenu(menu);
33 }
34
35
36 //当菜单中某项被选中时运行这个函数
37 @Override
38 public boolean onOptionsItemSelected(MenuItem item)
39 {
40 switch(item.getItemId())
41 {
42 case 0:displayToast("第0项被选中");break;
43 case 1:displayToast("第1项被选中");break;
44 case 2:displayToast("第2项被选中");break;
45 case 3:displayToast("第3项被选中");break;
46 case 4:displayToast("第4项被选中");break;
47 case 5:displayToast("第5项被选中");break;
48 case 6:displayToast("第6项被选中");break;
49
50 }
51
52 return super.onOptionsItemSelected(item);
53 }
54
55 /*
56 @Override
57 public boolean onCreateOptionsMenu(Menu menu)
58 {
59 MenuInflater inflater = getMenuInflater();
60 inflater.inflate(R.layout.menu, menu); menu.add(0,0,Menu.NONE, "1").setIcon(R.drawable.ic_launcher);//自己增加其它东西
61 return super.onCreateOptionsMenu(menu);
62 }
63
64 @Override
65 public boolean onOptionsItemSelected(MenuItem item)
66 {
67 int item_id = item.getItemId();
68
69 switch(item_id)
70 {
71 case R.id.mlist://自定义
72 {}
73 }
74 return super.onOptionsItemSelected(item);
75 }
76 */
77
78
79
80 //显示Toast函数
81 private void displayToast(String s)
82 {
83 Toast.makeText(this, s, Toast.LENGTH_LONG).show();
84 }
85
86 }
复制代码

能够用把凝视去掉然后把代码换成XML来构建menu



名字叫做menu

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.     <!-- Search, should appear as action button -->  
  3.     <item android:id="@+id/action_search"  
  4.           android:icon="@drawable/ic_action_search"  
  5.           android:title="@string/action_search"  
  6.           android:showAsAction="ifRoom" />  
  7.     <!-- Settings, should always be in the overflow -->  
  8.     <item android:id="@+id/action_settings"  
  9.           android:title="@string/action_settings"  
  10.           android:showAsAction="never" />  
  11. </menu>  


不知道为什么图标出不来。仅仅能在列表里表示。

PS:没有图标是仅仅能在list里面的不能再actionbar里面的



posted @ 2017-04-13 21:15  gccbuaa  阅读(278)  评论(0编辑  收藏  举报