我的项目中有3个活动,我想仅在一个活动中删除/隐藏操作栏中的searchView。
我尝试了searchView.setVisibility(View.GONE);但仍有可点击的图标。
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/menu_search"
android:title="@string/menu_search"
android:icon="@drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
<item
android:id="@+id/item_clear_memory_cache"
android:title="@string/menu_item_clear_memory_cache"/>
<item
android:id="@+id/item_clear_disc_cache"
android:title="@string/menu_item_clear_disc_cache"/>
</menu>
答案 0 :(得分:9)
menu.findItem(R.id.menu_search).setVisible(false);
应该是这样的。
答案 1 :(得分:5)
您可以通过以下方式隐藏搜索视图和搜索图标:
searchItem.setVisible(false);
searchView.setVisibility(View.GONE);
然后你可以把它带回来:
searchItem.setVisible(true);
searchView.setVisibility(View.VISIBLE);
答案 2 :(得分:0)
好吧,经过一些研究,您可以找到我完整的示例。不要忘记在需要向后显示搜索视图的活动或片段中设置可见性和可见性。
我正在寻找一种方法来隐藏搜索视图偏好设置。
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// this means that we're telling the Activity that is hosting the Fragment that we want to display menus
setHasOptionsMenu(true);
}
/**
* ********************* SEARCH ********************
*/
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
final MenuItem item = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) item.getActionView();
item.setVisible(false);
searchView.setVisibility(View.GONE);
}
}
和menu_main.xml
<item android:id="@+id/action_search"
android:title="@string/action_search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always|collapseActionView"
/>