android UI小结(六)
来源:互联网 发布:java 等待1秒 编辑:程序博客网 时间:2024/05/16 13:40
一、选项菜单和子菜单
菜单资源文件一般放在/res/menu目录下,菜单资源的根元素通常是<menu />,<menu />,元素无需指定任何属性,它可以包含子元素:
<item />:定义菜单项
<group />:将多个item定义的菜单包装成一个菜单组。
一般推荐使用XML文件定义菜单。
eg.定义菜单的经典例子
而菜单项被单击后回调的一般写法如下:
二、上下文菜单 ContextMenu
用户长按界面时会出现的菜单项称为上下文菜单。
创建上下文菜单的资源文件:
为某一组件注册上下文菜单以及菜单项被单击后回调的方法
三、PopupMenu 弹出式菜单
会在指定组件上弹出菜单项,默认情况下,PopupMenu会显示在该组件的下方或上方。
eg.创建PopupMenu并为Popup菜单的菜单项的单击事件绑定监听器
菜单资源文件一般放在/res/menu目录下,菜单资源的根元素通常是<menu />,<menu />,元素无需指定任何属性,它可以包含子元素:
<item />:定义菜单项
<group />:将多个item定义的菜单包装成一个菜单组。
一般推荐使用XML文件定义菜单。
eg.定义菜单的经典例子
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:title="@string/font_size"android:icon="@drawable/font"><menu><!-- 定义一组单选菜单项 --><group android:checkableBehavior="single"><!-- 定义多个菜单项 --><itemandroid:id="@+id/font_10"android:title="@string/font_10"/><itemandroid:id="@+id/font_12"android:title="@string/font_12"/><itemandroid:id="@+id/font_14"android:title="@string/font_14"/><itemandroid:id="@+id/font_16"android:title="@string/font_16"/><itemandroid:id="@+id/font_18"android:title="@string/font_18"/></group></menu></item><!-- 定义一个普通菜单项 --><item android:id="@+id/plain_item"android:title="@string/plain_item"></item><item android:title="@string/font_color"android:icon="@drawable/color"><menu><!-- 定义一组允许复选的菜单项 --><group><!-- 定义3个菜单项 --><itemandroid:id="@+id/red_font"android:title="@string/red_title"/><itemandroid:id="@+id/green_font"android:title="@string/green_title"/><itemandroid:id="@+id/blue_font"android:title="@string/blue_title"/></group></menu></item></menu>
而菜单项被单击后回调的一般写法如下:
@Overridepublic boolean onCreateOptionsMenu(Menu menu){MenuInflater inflator = new MenuInflater(this);// 状态R.menu.context对应的菜单,并添加到menu中inflator.inflate(R.menu.my_menu, menu);return super.onCreateOptionsMenu(menu);}@Override// 选项菜单的菜单项被单击后的回调方法public boolean onOptionsItemSelected(MenuItem mi){if(mi.isCheckable()){mi.setChecked(true); //②}// 判断单击的是哪个菜单项,并针对性的作出响应。switch (mi.getItemId()){case R.id.font_10:txt.setTextSize(10 * 2);break;case R.id.font_12:txt.setTextSize(12 * 2);break;case R.id.font_14:txt.setTextSize(14 * 2);break;case R.id.font_16:txt.setTextSize(16 * 2);break;case R.id.font_18:txt.setTextSize(18 * 2);break;case R.id.red_font:txt.setTextColor(Color.RED);mi.setChecked(true);break;case R.id.green_font:txt.setTextColor(Color.GREEN);mi.setChecked(true);break;case R.id.blue_font:txt.setTextColor(Color.BLUE);mi.setChecked(true);break;case R.id.plain_item:Toast toast = Toast.makeText(MenuResTest.this, "您单击了普通菜单项",Toast.LENGTH_SHORT);toast.show();break;}return true;}
二、上下文菜单 ContextMenu
用户长按界面时会出现的菜单项称为上下文菜单。
创建上下文菜单的资源文件:
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><!-- 定义一组单选菜单项目 --><group android:checkableBehavior="single"><!-- 定义3个菜单项 --><itemandroid:id="@+id/red"android:title="@string/red_title"android:alphabeticShortcut="r"/><itemandroid:id="@+id/green"android:title="@string/green_title"android:alphabeticShortcut="g"/><itemandroid:id="@+id/blue"android:title="@string/blue_title"android:alphabeticShortcut="b"/></group> </menu>
为某一组件注册上下文菜单以及菜单项被单击后回调的方法
@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);txt = (TextView) findViewById(R.id.txt);// 为文本框注册上下文菜单registerForContextMenu(txt);}// 创建上下文菜单时触发该方法@Overridepublic void onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuInfo menuInfo){MenuInflater inflator = new MenuInflater(this);// 状态R.menu.context对应的菜单,并添加到menu中inflator.inflate(R.menu.context, menu);menu.setHeaderIcon(R.drawable.tools);menu.setHeaderTitle("请选择背景色");}// 上下文菜单中菜单项被单击时触发该方法。@Overridepublic boolean onContextItemSelected(MenuItem mi){mi.setChecked(true); //①switch (mi.getItemId()){case R.id.red:mi.setChecked(true);txt.setBackgroundColor(Color.RED);break;case R.id.green:mi.setChecked(true);txt.setBackgroundColor(Color.GREEN);break;case R.id.blue:mi.setChecked(true);txt.setBackgroundColor(Color.BLUE);break;}return true;}
三、PopupMenu 弹出式菜单
会在指定组件上弹出菜单项,默认情况下,PopupMenu会显示在该组件的下方或上方。
eg.创建PopupMenu并为Popup菜单的菜单项的单击事件绑定监听器
// 创建PopupMenu对象popup = new PopupMenu(this, button);// 将R.menu.popup_menu菜单资源加载到popup菜单中getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());// 为popup菜单的菜单项单击事件绑定事件监听器popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){@Overridepublic boolean onMenuItemClick(MenuItem item){switch (item.getItemId()){case R.id.exit:// 隐藏该对话框popup.dismiss();break;default:// 使用Toast显示用户点击的菜单项Toast.makeText(PopupMenuTest.this,"您单击了【" + item.getTitle() + "】菜单项", Toast.LENGTH_SHORT).show();}return true;}});popup.show();}
0 0
- android UI小结(六)
- Android UI 小结
- android UI小结(一)
- android UI小结(二)
- android UI小结(三)
- android UI小结(四)
- android UI小结(五)
- Android UI优化小结
- Android 开发学习小结(六)
- 【Android UI】SlidingTabLayout使用小结
- Android开发之路六---UI组件
- 转android的UI设计六
- Android UI布局和事件处理小结
- android UI布局的性能优化小结
- Android开发小结——UI开发
- 小结六
- 【Android】android的基本UI操作(2)以及小结
- Android基础UI篇------六种基本布局
- IO练习--按字节截取字符串
- 用 pickle 实现简易“跨”Python实现平台的调用
- android UI小结(五)
- 网络编程初探--使用UDP协议的简易聊天室
- String 类常见问题比较
- android UI小结(六)
- MySQL 查询排名
- JPA
- JPA-1 概述与HelloWorld
- Android学习笔记 2017
- Innodb中的事务隔离级别和锁的关系
- 杭电ACM2003:求绝对值
- 一些同样适用于人生的计算机原理
- Android Studio2.3.1下载地址