关于toolbar菜单设置了always后不显示的问题

本文介绍了一种解决Android应用中Toolbar菜单项不显示的方法。通过调整XML配置文件中的命名空间及属性前缀,使菜单项能够在Toolbar上正常显示。

我们一般写menu文件时会有如下写法:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu011"
          android:title="hehe"
          android:icon="@mipmap/ic_launcher"
          android:showAsAction="always"/>
</menu>

这样写出来的menu是不会再toolbar上面显示的,跟设置的never一样都在隐藏菜单里。解决这个问题的办法其实很简单,如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_home"
        android:icon="@mipmap/home"
        app:showAsAction="always<span style="font-family: Arial, Helvetica, sans-serif;"> android:title="@string/menu_home"/></menu></span>

新增一句

xmlns:app="http://schemas.android.com/apk/res-auto"


android:showAsAction="always"
改成

app:showAsAction="always"
即可解决。


<think>好的,我现在需要帮助用户在Android ToolBar中添加或配置菜单项。首先,我要回忆一下关于Toolbar菜单配置的相关知识,并参考用户提供的引用内容。 根据引用[1],提到了配置menuToolbar使用技巧的一部分。引用[3]也提到Toolbar可以自由添加子控件,所以设置菜单应该是可行的。用户的问题是如何在ToolBar中添加或配置菜单项,我需要分步骤说明。 首先,用户需要在项目中创建menu资源文件。这通常在res/menu目录下,比如创建一个toolbar_menu.xml。里面定义菜单项,使用item标签,设置id、标题、图标等属性。例如: <menu> <item android:id="@+id/action_search" android:title="搜索" android:icon="@drawable/ic_search" app:showAsAction="ifRoom"/> </menu> 然后,在Activity中,需要覆盖onCreateOptionsMenu方法,将menu资源文件inflate到Toolbar中。这里可能需要先获取Toolbar的实例,并调用inflateMenu方法,或者使用MenuInflater。过根据常规做法,通常是在onCreateOptionsMenu里inflate,然后在onOptionsItemSelected处理点击事件。 过,如果Toolbar已经作为ActionBar使用,可能需要调用setSupportActionBar(toolbar),这样标准的菜单处理方法就适用了。引用[4]中的代码是设置返回按钮的,可能与菜单设置无关,但说明可能需要正确配置ActionBar的支持。 接下来,处理菜单项的点击事件,需要覆盖onOptionsItemSelected方法,根据item的id来执行同的操作。 可能需要检查是否正确设置Toolbar为支持ActionBar,否则菜单可能无法显示。另外,在菜单项中,showAsAction属性控制显示方式,比如总是显示、仅在溢出菜单中等。 还要注意命名空间的问题,在menu文件中可能需要使用app命名空间,特别是当使用兼容库时。例如,app:showAsAction而android:showAsAction,以确保兼容旧版本。 总结步骤应该是:创建menu资源文件,在Activity中inflate菜单,处理点击事件。同时确保Toolbar已经正确初始化和设置为支持ActionBar。</think>在Android Toolbar中配置菜单项需要完成三个核心步骤:创建菜单资源文件、加载菜单项、处理点击事件。以下是具体实现方法: 1. **创建菜单资源文件** ```xml <!-- res/menu/toolbar_menu.xml --> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:title="搜索" android:icon="@drawable/ic_search" app:showAsAction="ifRoom"/> <item android:id="@+id/action_settings" android:title="设置" app:showAsAction="never"/> </menu> ``` *`app:showAsAction`属性控制显示方式:* - ifRoom:空间足够时显示图标 - never:始终在溢出菜单显示 - always:强制显示建议) 2. **在Activity中加载菜单** ```java @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.toolbar_menu, menu); return true; } ``` 需要先设置Toolbar为ActionBar: ```java Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // 关键配置[^3] ``` 3. **处理菜单点击事件** ```java @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: // 处理搜索操作 return true; case R.id.action_settings: // 处理设置操作 return true; default: return super.onOptionsItemSelected(item); } } ``` **注意事项:** 1. 使用AppCompat库时需要`xmlns:app`命名空间 2. 图标建议使用24dp的Material Design图标 3. 溢出菜单的触发方式:设备菜单键或Toolbar右侧的三个点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值