这是我的问题:
展开搜索视图并显示弹出菜单后,添加"项目出现(我认为它不应该):
然后使用后退箭头键返回,如您所见,添加按钮变为:
我使用支持:appcompat-v7:25.1.0,这是我的菜单代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/app_bar_search"
android:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:title="Search"
app:showAsAction="always|collapseActionView"
android:enabled="true"
android:visible="true"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item android:title="Add"
android:enabled="true"
android:icon="@drawable/ic_action_add"
android:visible="true"
app:showAsAction="ifRoom"
android:id="@+id/add" />
<item android:title="Settings"
android:id="@+id/settings"
app:showAsAction="never"
android:icon="@drawable/ic_action_settings"
android:enabled="true"
android:visible="true" />
<item android:title="Feedback"
android:id="@+id/feedbvack"
app:showAsAction="never"
android:icon="@drawable/ic_action_feedback"
android:enabled="true"
android:visible="true" />
</menu>
我可以将添加按钮showAsAction设置为&#34;始终&#34;但我知道这是沮丧的。 有谁在这里知道为什么会有这种行为?我该如何防止这种情况?
提前致谢。
答案 0 :(得分:2)
试试这个
<item
android:id="@+id/app_bar_search"
android:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@drawable/ic_action_search"
android:title="Search"
app:showAsAction="always|collapseActionView"
android:enabled="true"
android:visible="true"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item android:title="Add"
android:enabled="true"
android:icon="@drawable/ic_action_add"
android:visible="true"
app:showAsAction="always"
android:id="@+id/add" />
<item android:title="Settings"
android:id="@+id/settings"
app:showAsAction="never"
android:icon="@drawable/ic_action_settings"
android:enabled="true"
android:visible="true" />
<item android:title="Feedback"
android:id="@+id/feedbvack"
app:showAsAction="never"
android:icon="@drawable/ic_action_feedback"
android:enabled="true"
android:visible="true" />
将app:showAsAction
设置为always
,以确保它始终可见。
答案 1 :(得分:1)
ifRoom的使用具有此功能,如果可用空间将显示,否则它将隐藏它更好地始终使用或从不
<item android:title="Add"
android:enabled="true"
android:icon="@drawable/ic_action_add"
android:visible="true"
app:showAsAction="always"
android:id="@+id/add" />
答案 2 :(得分:0)
你可以尝试使用它:
MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
supportInvalidateOptionsMenu();
//or use invalidateOptionsMenu();
return true;
}
});
因此,当SearchView将被折叠时,工具栏将重新分配项目,并且ifRoom项目将可见。我也有这个错误并以这种方式解决了。
答案 3 :(得分:0)
@Kovy 已在上面回答了此错误的修复程序,我确认它修复了该错误。非常感谢你,伙计!但是,上述函数已被弃用,而支持单个菜单项 OnActionExpandListener。示例如下:
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
supportInvalidateOptionsMenu();
return true;
}
});