android - 操作栏菜单图标未显示在正确位置但显示在下拉菜单中
问题描述
我正在尝试在设计视图中的 Android 操作栏上添加菜单图标,我可以在正确的位置看到菜单,但是当我尝试预览时,它没有app:showAsAction="always"
显示为隐藏下拉菜单。谁能帮我解决这个问题?
设计视图
APP运行预览
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/action_home"
android:orderInCategory="0"
android:icon="@drawable/outline_home_white_48"
app:showAsAction="always"
android:title="Home">
</item>
<item
android:id="@+id/action_option"
android:icon="@drawable/menu_icon"
android:title="Options"
app:showAsAction="always">
<menu>
<item
android:id="@+id/action_settings"
android:title="@string/action_settings">
</item>
<item
android:id="@+id/action_update"
android:title="@string/update_app">
</item>
</menu>
</item>
</menu>
我的java代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.action_home:
fragment = new HomeFragment();
break;
default:
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
}
return super.onOptionsItemSelected(item);
}
安卓构建版本
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.myapp.aaa"
minSdkVersion 22
targetSdkVersion 28
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
解决方案
尝试 android:showAsAction
代替app:showAsAction
. 还添加tools:ignore="AppCompatResource"
我已经解决了这里是完整的代码
<item
android:id="@+id/action_home"
android:orderInCategory="0"
android:icon="@drawable/outline_home_white_48"
android:showAsAction="always"
android:title="Home"
tools:ignore="AppCompatResource">
</item>
<item
android:id="@+id/action_search"
android:orderInCategory="0"
android:icon="@drawable/search_icon_white"
android:showAsAction="always|collapseActionView"
app:actionViewClass="android.widget.SearchView"
android:title="Search Branch"
tools:ignore="AppCompatResource">
</item>
<item
android:id="@+id/action_option"
android:icon="@drawable/menu_icon"
android:title="Options"
android:showAsAction="always"
tools:ignore="AppCompatResource">
<menu>
<item
android:id="@+id/action_settings"
android:title="@string/action_settings">
</item>
<item
android:id="@+id/action_update"
android:title="@string/update_app">
</item>
</menu>
</item>
推荐阅读
- configuration - Filebeat 中央管理替代方案
- laravel - 嵌套的雄辩关系
- dll - Uno WASM 在使用 DLL 时无法解析包
- javascript - NW.js 中的 nvm-windows Node.js 版本更改
- javascript - 使用Javascript遍历无序列表
- postgresql - 如何从包含数组的某个键的 jsonb 列中获取 uniq 数据?
- vue.js - 在 Nuxt JS 中重新加载页面后路由参数值消失
- c++ - 如何在 C++ 中调试未捕获的异常核心转储
- javascript - document.write 是否删除 css 样式?
- c# - 我需要根据类型做一件特定的事情,不知道如何实现它