5

我的项目中有 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>
4

3 回答 3

12

menu.findItem(R.id.menu_search).setVisible(false);应该是这样的。

于 2013-01-14T18:29:03.347 回答
6

您可以通过执行以下操作隐藏搜索视图和搜索图标:

searchItem.setVisible(false);
searchView.setVisibility(View.GONE);

然后,您可以通过以下方式将其带回:

searchItem.setVisible(true);
searchView.setVisibility(View.VISIBLE);
于 2015-08-08T09:34:07.303 回答
1

好吧,在这里进行一些研究之后,您可以找到我的完整示例。不要忘记在需要显示搜索视图的活动或片段中设置可见性和可见性。

我正在寻找一种在首选项中隐藏搜索视图的方法。

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"
    />

于 2019-12-09T14:17:52.900 回答