第35章:使用xml文件定义菜单(Menu)并设置监听事件
来源:互联网 发布:选择网络项目的标准 编辑:程序博客网 时间:2024/05/22 16:52
我们都知道在Java代码中也可以定义菜单,但是这样会使得代码看起来太过臃肿,并不符合我们编程的一贯原则,所以,Android中也提供了在xml文件中定义菜单。
xml定义菜单不但可以是代码简洁化,并且看起来更加清除容易理解,废话不多说,我们来看下它的一些属性:
首先声明:菜单文件在Android中是有它确定的地方的,就是Android资源文件夹下的Menu文件夹下面,没有的话可以创建一个Android资源文件夹。
在xml文件中,菜单的根元素是<menu></menu>,在其中可以包含<item></item>和<group></group>
在group中可以指定以下属性:
1、checkableBehavior:指定该组菜单的选择行为。可指定为none(不可选),all(多选),single(单选)
2、menuCategory:对菜单进行分类,指定菜单的优先级。值为:container、system、secondary、alternative
3、visible:指定该组菜单是否可见
4、enable:指定该组菜单是否可用
在item中可以定义以下属性:
1、android:id
2、android:title
3、android:icon
4、android:alphabeticShortcut:为菜单指定快捷键
5、android:numericShortcut:为菜单指定数字快捷键
6、android:checkable:设置该菜单项是否可选
7、android:checked:设置该菜单是否已选中
8、android:visible:设置该菜单项是否可见
9、android:enable:设置该菜单项是否可用
下面我们来看个实例:
string.xml
<resources> <string name="app_name">My Application</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="font_size">请选择字号</string> <string name="font_10">10号字体</string> <string name="font_12">12号字体</string> <string name="font_14">14号字体</string> <string name="font_16">16号字体</string> <string name="font_18">18号字体</string> <string name="plain_item">普通菜单项</string> <string name="font_color">请选择颜色</string> <string name="font_red">红色</string> <string name="font_blue">蓝色</string> <string name="font_yellow">黄色</string></resources>
activity_main.xml
<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"> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:icon="@drawable/ic_launcher" android:title="@string/font_size"> <menu> <group android:checkableBehavior="single"> <item android:id="@+id/font_10" android:title="@string/font_10"></item> <item android:id="@+id/font_12" android:title="@string/font_12"> </item> <item android:id="@+id/font_14" android:title="@string/font_14"> </item> <item android:id="@+id/font_16" android:title="@string/font_16"> </item> <item android:id="@+id/font_18" android:title="@string/font_18"> </item> </group> </menu> </item> <item android:id="@+id/plain_item" android:title="@string/plain_item"> </item> <item android:title="@string/font_color"> <menu> <group> <item android:id="@+id/font_red" android:title="@string/font_red"> </item> <item android:id="@+id/font_blue" android:title="@string/font_blue"> </item> <item android:id="@+id/font_yellow" android:title="@string/font_yellow"> </item> </group> </menu> </item></menu>
context.xml
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/red" android:title="@string/font_red" android:alphabeticShortcut="r"> </item> <item android:id="@+id/blue" android:title="@string/font_blue" android:alphabeticShortcut="b"> </item> <item android:id="@+id/yellow" android:title="@string/font_yellow" android:alphabeticShortcut="y"> </item> </group></menu>
MainActivity.java
package cn.edu.hpu.acm.ui;import android.content.Context;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private TextView textView; Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text); registerForContextMenu(textView); context = MainActivity.this; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { MenuInflater menuInflater = new MenuInflater(context); menuInflater.inflate(R.menu.context,menu); menu.setHeaderTitle("请选择背景颜色"); menu.setHeaderIcon(R.drawable.ic_launcher); } @Override public boolean onContextItemSelected(MenuItem item) { item.setChecked(true); switch (item.getItemId()){ case R.id.red: item.setChecked(true); textView.setBackgroundColor(Color.RED); break; case R.id.blue: item.setChecked(true); textView.setBackgroundColor(Color.BLUE); break; case R.id.yellow: item.setChecked(true); textView.setBackgroundColor(Color.YELLOW); break; default: break; } return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.isCheckable()){ item.setChecked(true); } switch (item.getItemId()){ case R.id.font_10: textView.setTextSize(10 * 2); break; case R.id.font_12: textView.setTextSize(12 * 2); break; case R.id.font_14: textView.setTextSize(14 * 2); break; case R.id.font_16: textView.setTextSize(16 * 2); break; case R.id.font_18: textView.setTextSize(18 * 2); break; case R.id.font_red: textView.setTextColor(Color.RED); break; case R.id.font_blue: textView.setTextColor(Color.BLUE); break; case R.id.font_yellow: textView.setTextColor(Color.YELLOW); break; case R.id.plain_item: Toast.makeText(context,"你点击了普通菜单项",Toast.LENGTH_SHORT).show(); break; default: break; } return true; }}
- 第35章:使用xml文件定义菜单(Menu)并设置监听事件
- Android中MenuInflater的使用(布局文件定义Menu菜单)
- 定义XML菜单文件
- 侧滑菜单的使用和监听事件的设置
- 菜单之二:使用xml文件定义菜单
- 菜单之二:使用xml文件定义菜单
- 通过xml文件定义菜单
- 使用 XML 定义选项菜单
- Android菜单设计(1) : 使用xml文件布局创建 options menu
- Android菜单设计(1) : 使用xml文件布局创建 options menu
- 使用XML资源文件来自定义颜色并使用
- android menu菜单设置
- android Menu菜单操作(偏门--监听 more 操作)
- 关于在xml文件里面为Button设置监听事件报错。
- Android开发之使用xml自定义底部Menu菜单
- [一个星期自学安卓]使用xml加载菜单Menu
- RecyclerView的使用、res下新建菜单menu-main.xml
- android学习:菜单(Menu)的使用
- Codeforces Round #317 B. Order Book
- 【C语言探索之旅】第三部分第三课:SDL开发游戏之显示图像
- 汇编读书笔记 第一章
- 微信公共号开发者中心(JAVA)【token失败解决办法】
- 汇编读书笔记 -- 第二章
- 第35章:使用xml文件定义菜单(Menu)并设置监听事件
- PupopWindow第一次弹出后点击触发外框触发其他控件事件
- 免费DUMP分析服务
- win7 便签损坏
- viewPage notifyDataSetChanged无刷新解决方案之一
- JAVA IO流
- HDU 2523 hash排序
- 设置某一个Activity为单例模式无法接收到onActivityResult
- package.path和package.cpath