菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏
2013-11-03 09:39
246 查看
参考《疯狂android讲义》2.10节 P174,参见归档project:XmlMenuDemo.zip
一般推荐使用XML文件定义菜单。
基本步骤如下:
1、定义布局文件
为简单显示原理,本布局只有一个EditText
2、定义菜单资源文件
(1)选项菜单文件
(2)上下文菜单文件
3、重写onCreateOptionMenu及onCreateContextMenu
4、为组件注册上下文菜单(仅适用于ContextMenu)
5、定义菜单被单击时触发的方法
一般推荐使用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" > <EditText android: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" > <item android:id="@+id/font_10" android:title="@string/font_10" /> <item android:id="@+id/font_20" android:title="@string/font_20"/> <item android:id="@+id/font_30" android:title="@string/font_30"/> <item android:id="@+id/font_40" android:title="@string/font_40"/> </group> </menu> </item> <item android: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" > <item android:id="@+id/font_red" android:alphabeticShortcut="r" android:title="@string/red"/> <item android:id="@+id/font_green" android:alphabeticShortcut="r" android:title="@string/green"/> <item android: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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etHelloWorld = (EditText) findViewById(R.id.et_hello_world); registerForContextMenu(etHelloWorld); } @Override public 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; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { getMenuInflater().inflate(R.menu.context, menu); super.onCreateContextMenu(menu, v, menuInfo); } @Override public 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); } @Override public 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); } }
相关文章推荐
- AndroidManifest.xml配置文件详解-… 分类: Android开发 2014-05-30 10:54 46人阅读 评论(0) 收藏
- 菜单之一:Menu基础内容 分类: H1_ANDROID 2013-11-03 00:23 906人阅读 评论(0) 收藏
- 使用xml及java代码混合的方式来设置图形界面 分类: H1_ANDROID 2013-10-26 17:33 1859人阅读 评论(0) 收藏
- AdapterView及其子类之二:使用ListActivity及ArrayAdapter创建列表 分类: H1_ANDROID 2013-11-19 22:01 1248人阅读 评论(0) 收藏
- Android SDK下载镜像的介绍使用 分类: Android安装及配置 2014-12-23 12:50 64人阅读 评论(0) 收藏
- Android将SQLite数据表导出到csv格式文件 分类: Android数据存储 2014-06-20 13:28 85人阅读 评论(0) 收藏
- 连接ACCESS 数据库不能使用 '';文件已在使用中。 分类: 错误积累 2012-03-12 09:09 4755人阅读 评论(0) 收藏
- Android 中查看内存的使用情况集常用adb命令 标签: Androidadb 2014-06-28 10:55 57206人阅读 评论(0) 收藏 举报 分类: Android(9) 版权声
- 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml 分类: H4_SOLR/LUCENCE 2014-07-23 21:30 1959人阅读 评论(0) 收藏
- Loader之二:CursorLoader基本实例 分类: H1_ANDROID 2013-11-16 10:50 5447人阅读 评论(0) 收藏
- [android]使用TabHost+Fragment(替… 分类: Android开发 2014-05-30 10:57 108人阅读 评论(0) 收藏
- 使用python解析json文件 分类: python 小练习 2014-03-21 18:17 354人阅读 评论(0) 收藏
- Android配置文件,所有权限ZZ 分类: Android开发 2014-05-30 10:54 57人阅读 评论(0) 收藏
- 使用AlarmManager启动广播、服务、页面(Android定时器) 分类: Android 2015-07-14 17:49 13人阅读 评论(0) 收藏
- 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件 分类: C_OHTERS 2014-05-19 15:07 1108人阅读 评论(0) 收藏
- Android使用蓝牙与PC端进行通信 分类: Android 2015-07-30 09:45 15人阅读 评论(0) 收藏
- Android运行时异常“Binary XML file line # : Error inflating class” 分类: Android界面和组件 2014-09-12 00:19 94人阅读 评论(0) 收藏
- 使用python下载文件 分类: python python下载 2013-06-22 16:58 277人阅读 评论(0) 收藏
- 使用Broadcast实现android组件之间的通信 分类: android 学习笔记 2015-07-09 14:16 110人阅读 评论(0) 收藏
- Android使用两个Activity页面切换… 分类: Android开发 2014-05-30 10:55 65人阅读 评论(0) 收藏