Android UI之Memu菜单
Android UI之Memu菜单
1. options menu
按menu键显示。 因为options menu在屏幕底部最多只能显示6个菜单项,这些菜单项称为icon menu,icon menu只支持文字(title) 以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以不能设置checkable选项。而多于6的菜单项会以“more” icon menu来调出,称为expanded menu。它不支持icon,其他的特性都和icon menu一样!
两种使用方式:
(1)通过xml配置, menu.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:Android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/about"
- android:title="About"/>
- <item
- android:id="@+id/exit"
- android:title="Exit"/>
- </menu>
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.layout.menu, menu);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int item_id = item.getItemId();
- switch (item_id) {
- case R.id.about:
- Toast.makeText(this, "about", Toast.LENGTH_SHORT).show();
- break;
- case R.id.exit:
- Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show();
- break;
- }
- return true;
- }
- <span style="white-space:pre"> </span>public boolean onCreateOptionsMenu(Menu menu) {
- Log.i("com.test", "------------onCreateOptionsMenu"); // 只执行一次
- menu.add(0, 1, 1, "菜单1"); // 第二个属性itemId,第三个属性order
- menu.add(0, 2, 2, "菜单2");
- return super.onCreateOptionsMenu(menu);
- }
- private boolean mIsChange = false;
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- Log.i("com.test", "------------onPrepareOptionsMenu"); // 每次都执行
- if (mIsChange) {
- mIsChange = false;
- menu.getItem(1).setTitle("注销");
- } else {
- mIsChange = true;
- menu.getItem(1).setTitle("登录");
- }
- return super.onPrepareOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) { // itemId
- case 1:
- Toast.makeText(this, "111", Toast.LENGTH_SHORT).show();
- break;
- case 2:
- Toast.makeText(this, "222", Toast.LENGTH_SHORT).show();
- break;
- }
- return true;
- }
2. context menu
在相应的view上按几秒后显示
- Activity::registerForContextMenu(View view) 为某个view注册context menu,一般在Activity::onCreate里面调用。
- Activity::onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)创建context menu,和options menu不同,context meun每次显示时都会调用这个函数。
- Activity::onContextItemSelected(MenuItem item) 处理选中的菜单项。
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- menu.add(0, 1, 1, "中国");
- menu.add(0, 2, 2, "美国");
- menu.add(0, 3, 3, "日本");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case 1:
- Toast.makeText(this, "中国", Toast.LENGTH_SHORT).show();
- break;
- case 2:
- Toast.makeText(this, "美国", Toast.LENGTH_SHORT).show();
- break;
- case 3:
- Toast.makeText(this, "日本", Toast.LENGTH_SHORT).show();
- break;
- }
- return super.onContextItemSelected(item);
- }
3. sub menu
以上两种menu都可以加入子菜单,但是子菜单不能嵌套子菜单,最多两层。子菜单不支持icon
更多Android相关信息见Android 专题页面 http://www.bkjia.com/topicnews.aspx?tid=11
评论暂时关闭