2012-07-11 68 views
4

我试图从我的Activity禁用SearchView。我试了下面的代码:禁用SearchView

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

但它不起作用。 SearchView仍然可以点击,KeyBoard弹出。我希望它变得灰暗和不可点击。我怎样才能做到这一点?

+0

我认为这是一个更好的解决方案http://stackoverflow.com/a/42074814/5490632 – 2017-02-06 19:39:26

回答

4

没有既定答案,足以满足我的需求,所以我想为在相同情况下的任何人提供另一个。

SearchView, has focus, has search and clear button

甲搜索查看是由不同的视图,其可以是 - 在这种情况下必须是 - 单独寻址。 如果你希望你的搜索查看(支持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,然后点击它,系统似乎预计打开键盘,虽然没有显示键盘。因此,第一个后退按钮单击什么都不会导致除了关闭 - 没有显示或不实际打开 - 键盘。)

0

要清除搜索查看焦点:

searchView.clearFocus(); 

要隐藏搜索查看:

searchView.setVisibility(View.GONE); 
+2

如何知名度过去了,clearFocus是答案“我希望它变得灰暗,不可点击。“ – Risadinha 2013-11-05 14:55:06

4

要禁用任何视图(例如SearchView)任一组其input-typenone在布局XML或从Activity调用view.setInputType(InputType.TYPE_NULL)

+0

感谢您的回答和欢迎。 – 2014-01-16 08:57:27

+0

非常感谢你! – 2016-12-07 10:22:38

+1

如何重新启用它? @Deepti – 2016-12-07 10:31:25

1

您也可以完全隐藏searchView。 您可以隐藏搜索查看,并通过这样的searchicon:

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

然后你就可以把它带回来:

searchItem.setVisible(true); 
    searchView.setVisibility(View.VISIBLE); 
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);