android - 为什么工具栏不接受菜单的 showAsAction = "always" 属性
问题描述
toolbar = (Toolbar) view.findViewById(R.id.toolbar);
Main2Activity activity = (Main2Activity) getActivity();
activity.setSupportActionBar(toolbar);
activity.getSupportActionBar();
final SearchView searchView = (SearchView) view.findViewById(R.id.action_search);
toolbar.inflateMenu(R.menu.seacrh_monan);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.action_search:
Toast.makeText(getActivity(),"Bạn đã nhấn nút tìm kiếm",Toast.LENGTH_SHORT).show();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
});
return true;
}
return false;
}
});
return view;
}
这是我在 Fragment 中的代码工具栏
我给了我的菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_logout"
android:title="logout">
</item>
<item
android:id="@+id/action_search"
android:title="Search"
android:icon="@drawable/ic_search_white"
app:showAsAction="always|collapseActionView|ifRoom"
app:actionViewClass="androidx.appcompat.widget.SearchView"
/>
这是我的 seacrh_monan.xml
但是当我运行应用程序时,工具栏并不总是从菜单中获取 showAsAction。任何帮助表示赞赏。
解决方案
ifRoom
从属性中删除app:showAsAction
。always
或者,如果项目不多,您也可以删除。请注意,始终显示为操作的菜单项的数量是有限制的。
推荐阅读
- ruby-on-rails - 如何为等待的工人建立规范
- python - 可以在 for 循环中定义 self 变量吗?
- ember.js - 在覆盖 Ember 成员函数时,我是否应该始终包含 this._super(...arguments)
- javascript - Laravel 依赖选择
- r - 按最小地理空间距离 (R) 匹配两个数据集
- c# - 如何在 C# 上设置 XML 元素替换?
- stored-procedures - Oracle 存储过程视线
- encoding - 对话流中的结束问题
- c# - 如何修复以使用 TLS 1.2
- php - API 使用的密码保存(php 和 mysql)