2012-07-11 43 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);