6

我正在尝试SearchView从我的Activity. 我尝试了以下代码:

    mSearchView.setEnabled(false);
    mSearchView.setFocusable(false);
    mSearchView.setClickable(false);

但它不起作用。仍然可以单击 SearchView 并弹出键盘。我希望它变灰且不可点击。我怎样才能做到这一点?

4

5 回答 5

11

所陈述的答案都不足以满足我的需求,因此我想为处于相同情况的任何人提供另一个答案。

SearchView,有焦点,有搜索和清除按钮

SearchView 由不同的 View 组成,这些 View 可以——并且在这种情况下必须——单独处理。如果您希望您的 SearchView(支持 v7)在这样的状态下冻结和变灰,不响应任何类型的输入,包括搜索和清除按钮,您可以使用:

ImageView clearButton = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
SearchView.SearchAutoComplete searchEditText = (SearchView.SearchAutoComplete) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

clearButton.setEnabled(false);
searchEditText.setEnabled(false);
searchView.setSubmitButtonEnabled(false);

(此外,我遇到了 deeptis 答案的问题searchView.setInputType(InputType.TYPE_NULL):如果您以这种方式禁用 SearchView 并在之后单击它,系统似乎希望打开键盘,但未显示键盘。因此,第一次单击后退按钮只会关闭- 未显示或实际上未打开 - 键盘。)

于 2016-06-15T18:05:56.543 回答
6

要禁用任何视图(例如SearchView),请将其设置input-typenone布局 XML 或view.setInputType(InputType.TYPE_NULL)Activity.

于 2014-01-15T07:51:29.557 回答
2

您也可以完全隐藏 searchView。您可以通过执行以下操作隐藏搜索视图和搜索图标:

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

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

    searchItem.setVisible(true);
    searchView.setVisibility(View.VISIBLE);
于 2015-08-08T09:33:00.950 回答
0

要清除 SearchView 焦点:

searchView.clearFocus();

隐藏搜索视图:

searchView.setVisibility(View.GONE);
于 2012-08-16T08:02:41.477 回答
0

从@outta Comfort 的回答来看,这是我的解决方案:

private void enableSearchView(View view, boolean enabled) {
    view.setEnabled(enabled);
    if (view instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view;
        for (int i = 0; i < viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            enableSearchView(child, enabled);
        }
    }
}

在其他地方,称之为:

enableSearchView(searchView, true/false);
于 2016-09-09T09:14:29.090 回答