android选项菜单xml,使用 XML 定义选项菜单

何为选项菜单?

选项菜单是某个Activity的主菜单项,供您放置对应用产生全局影响的操作,如“搜索”、“撰写电子邮件”和设置。选项菜单中的项目在屏幕上的显示位置取决于您开发应用所使用的 Android 版本:

如果您开发的应用适用于 Android 2.3.x (API 级别10)或更低版本,选项菜单的内容会出现在屏幕底部如下图所示,且当菜单项超过6个时,则会讲第六项和其余项目放入溢出菜单(即图中的 More 菜单项)中。

8bab93935c5f01edcc5abfb4c02926ca.png

如果您开发的应用适用于 Android 3.0 (API 级别 11)及更高版本,选项菜单的内容将出现在应用栏中如下图所示。默认情况下,系统会将所有的菜单项放入操作溢出菜单(即图中标号为3的菜单项)中。

3425872eb0e97bafb1e398d41cd96b18.png

创建menu资源文件

首先我在 app/src/mian/res/menu/ 目录下创建一个 my_menu.xml 文件

内容如下:

android:id="@+id/item1"

android:icon="@mipmap/ic_launcher"

android:title="item1"/>

android:id="@+id/item2"

android:icon="@mipmap/ic_launcher"

android:title="item2"/>

android:id="@+id/group"

android:checkableBehavior="single">

android:id="@+id/group_item1"

android:icon="@mipmap/ic_launcher"

android:title="group_item1"/>

android:id="@+id/group_item2"

android:icon="@mipmap/ic_launcher"

android:title="group_item2"/>

android:id="@+id/submenu"

android:title="submenu_title">

android:id="@+id/submenu_item1"

android:title="submenu_item1"/>

从代码中我们可以看出,菜单资源文件以

元素的常用属性:

android:id 为菜单项指定一个唯一标识

android:title 指定菜单项的标题

android:icon 指定菜单项的图标

android:showAsAction 指定菜单项作为操作项目显示在应用栏的时间和方式

元素的常用属性

android:id 为改组菜单指定一个唯一标识

android:checkableBehavior 指定改组菜单的选择行为

android:visible 指定改组菜单是否可见

android:enable 指定改组菜单是否可用

加载menu资源文件

通过重写 onCreateOptionsMenu() 方法,来为 Activity 指定选项菜单。

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.my_menu, menu);

return true;

}

}

运行效果:

6cedcf9919b5f24d9ac31f668d6e5008.gif

处理点击事件

当我们从选项菜单中选择项目时,系统将调用 Activity 的 onOptionsItemSelected() 方法。 此方法将传递所选的 MenuItem,可以通过调用 getItemId() 方法来识别项目,该方法将返回菜单项的唯一 ID(由菜单资源中的 android:id 属性定义)。 我们可以将此 ID 与已知的菜单项匹配,以执行适当的操作。例如:

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.my_menu, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.group_item1:

item.setChecked(true);

return true;

case R.id.group_item2:

item.setChecked(true);

return true;

default:

Toast.makeText(this, "selected " + item.getTitle(), Toast.LENGTH_SHORT).show();

return super.onOptionsItemSelected(item);

}

}

}

运行效果:

9b8b0adf3356a5b56772828005bd99d3.gif

总结

本文主要初步的介绍了如何使用 XML 定义选项菜单,定义其他类型菜单的方法类似。更深入的了解和使用菜单请参考Android官方教程。关于即便设置showAsAction="always",items仍然在overflow中显示的问题,请参考这篇文章。

ps:欢迎留言交流,共同进步。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值