我在同一页面(主页)的操作栏上具有NavigationView和搜索过滤器,在操作栏上添加搜索项后,其在操作栏和导航视图(菜单)中均显示。而且我无法隐藏我不想要的操作栏右侧的3个点。找到下面的代码和屏幕截图
activity_main_drawer.xml
<?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">
<group android:id="@+id/grp1">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/theme"
android:title="@string/nav_theme" />
</group>
<group android:id="@+id/grp2">
<item
android:id="@+id/nav_gallery"
android:icon="@drawable/fingerprint"
android:title="@string/nav_touchid" />
</group>
<group android:id="@+id/grp3">
<item
android:id="@+id/nav_contact"
android:icon="@drawable/contact_us"
android:title="@string/nav_contacts" />
</group>
<group android:id="@+id/grp4">
<item
android:id="@+id/nav_manage"
android:icon="@drawable/notification"
android:title="@string/nav_notifications" />
</group>
<group android:id="@+id/grp5">
<item
android:id="@+id/nav_user_guide"
android:icon="@drawable/user_guide"
android:title="@string/nav_userguide" />
</group>
<group android:id="@+id/grp6">
<item
android:id="@+id/nav_logout"
android:icon="@drawable/logout"
android:title="Log Out" />
</group>
<item
android:id="@+id/action_search"
android:icon="@drawable/searchicon"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />
</menu>
MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_drawer, menu);
// Retrieve the SearchView and plug it into SearchManager
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
答案 0 :(得分:2)
您在导航抽屉和菜单项中使用了相同的菜单文件。
创建一个不同的菜单文件R.menu.menu_main
或任何您想要的菜单项(三个点的菜单文件),它将包含SearchView。
为导航抽屉创建另一个菜单文件R.menu.menu_navigation
,其中将包含“相机”,“图库”,“联系人”,“连接”项,然后将此菜单文件附加到导航抽屉。