菜单之二:使用xml文件定义菜单
生活随笔
收集整理的這篇文章主要介紹了
菜单之二:使用xml文件定义菜单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考《瘋狂android講義》2.10節 P174,參見歸檔project:XmlMenuDemo.zip
一般推薦使用XML文件定義菜單。
基本步驟如下:
1、定義布局文件
為簡單顯示原理,本布局只有一個EditText
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><EditTextandroid:id="@+id/et_hello_world"android:layout_width="wrap_content"android:layout_height="wrap_content"android:hint="@string/hello_world" /></RelativeLayout>2、定義菜單資源文件
(1)選項菜單文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" ><!-- 注意:string的第一個字母為小寫,string.xml文件中也是!!! --><item android:title="@string/menu_font_size"><menu><group android:checkableBehavior="single" ><itemandroid:id="@+id/font_10"android:title="@string/font_10"/><itemandroid:id="@+id/font_20"android:title="@string/font_20"/><itemandroid:id="@+id/font_30"android:title="@string/font_30"/><itemandroid:id="@+id/font_40"android:title="@string/font_40"/></group></menu></item><itemandroid:title="@string/plain_menu"android:id="@+id/menu_plain_menu"/></menu>(2)上下文菜單文件 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" ><!-- 注意:string的第一個字母為小寫,string.xml文件中也是!!! --><group android:checkableBehavior="single" ><itemandroid:id="@+id/font_red"android:alphabeticShortcut="r"android:title="@string/red"/><itemandroid:id="@+id/font_green"android:alphabeticShortcut="r"android:title="@string/green"/><itemandroid:id="@+id/font_blue"android:alphabeticShortcut="r"android:title="@string/blue"/></group> </menu>
3、重寫onCreateOptionMenu及onCreateContextMenu
4、為組件注冊上下文菜單(僅適用于ContextMenu)
5、定義菜單被單擊時觸發的方法
package com.ljh.xmlmenudemo;import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.EditText; import android.widget.Toast;public class MainActivity extends Activity {private EditText etHelloWorld;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etHelloWorld = (EditText) findViewById(R.id.et_hello_world);registerForContextMenu(etHelloWorld);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {getMenuInflater().inflate(R.menu.context, menu);super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {// 普通箱單被點擊處所進行的操作。case R.id.menu_plain_menu:Toast.makeText(this, "你單擊了普通菜單", Toast.LENGTH_LONG).show();break;// 為子菜單的子項定義被點擊時所進行的操作。case R.id.font_10:etHelloWorld.setTextSize(10);break;case R.id.font_20:etHelloWorld.setTextSize(20);break;case R.id.font_30:etHelloWorld.setTextSize(30);break;case R.id.font_40:etHelloWorld.setTextSize(40);break;}return super.onOptionsItemSelected(item);}@Overridepublic boolean onContextItemSelected(MenuItem item) {item.setChecked(true);switch (item.getItemId()) {case R.id.font_red:item.setChecked(true);etHelloWorld.setBackgroundColor(Color.RED);break;case R.id.font_green:item.setChecked(true);etHelloWorld.setBackgroundColor(Color.GREEN);break;case R.id.font_blue:item.setChecked(true);etHelloWorld.setBackgroundColor(Color.BLUE);break;}return super.onContextItemSelected(item);}}
總結
以上是生活随笔為你收集整理的菜单之二:使用xml文件定义菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 菜单之一:Menu基础内容
- 下一篇: SharedPreferences基础