Android Activity菜单未在ActionBar显示,请求排查问题
排查ActionBar菜单不显示的常见问题
我来帮你梳理下菜单没出现在ActionBar上的可能原因,结合你给出的代码片段,按优先级排查这些点:
1. 修正showAsAction的前缀和语法
你代码里的android:showAsAction="alw..."看起来没写完,而且如果你的项目用的是AppCompat主题(绝大多数现代Android项目都是),必须用app:showAsAction代替原生的android:showAsAction,否则菜单不会正常显示在ActionBar上。
修改后的菜单item代码应该是这样:
<item android:id="@+id/search" android:icon="@drawable/ic_action_search" android:title="@string/menu_item_search" app:showAsAction="always" /> <!-- 用app前缀,并且补全always/ifRoom等值 -->
2. 确认Activity正确重写了onCreateOptionsMenu
菜单不会自动加载,你得在MainActivity里手动添加加载菜单的代码:
@Override public boolean onCreateOptionsMenu(Menu menu) { // 把这里的R.menu.your_menu_file换成你实际的菜单XML文件名 getMenuInflater().inflate(R.menu.your_menu_file, menu); return true; // 返回true才会显示菜单 }
3. 检查Activity的主题是否包含ActionBar
如果你的Activity用了NoActionBar系列主题(比如Theme.AppCompat.Light.NoActionBar),那ActionBar本身就不会显示,菜单自然也出不来。去AndroidManifest.xml里看MainActivity的theme设置:
<activity android:name=".MainActivity" <!-- 确保主题是带ActionBar的,比如下面这个 --> android:theme="@style/Theme.AppCompat.Light.DarkActionBar"> </activity>
4. 检查图标资源是否有效
确认@drawable/ic_action_search这个图标确实存在于res/drawable目录下,最好有不同分辨率的适配版本(比如drawable-hdpi、drawable-xhdpi等),避免因为图标找不到导致菜单被隐藏。
5. 如果你用了自定义Toolbar
如果布局里用Toolbar替代了原生ActionBar,一定要在Activity里把它设置为支持ActionBar:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // 这步是关键,没调用的话菜单不会显示在Toolbar上 }
先从这几个点逐一排查,最常见的问题就是showAsAction的前缀用错或者没写onCreateOptionsMenu方法~
内容的提问来源于stack exchange,提问作者Tầm Lè
相关产品推荐
相关产品推荐

