2012-07-11 4 views
4

J'essaie de désactiver un SearchView de mon Activity. J'ai essayé le code suivant:Désactiver SearchView

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

Mais cela ne fonctionne pas. SearchView peut toujours être cliqué et KeyBoard apparaît. Je veux qu'il devienne grisé et non-cliquable. Comment puis-je accomplir cela?

+0

Je pense que cela est une meilleure solution http://stackoverflow.com/a/42074814/5490632 –

Répondre

4

Aucune des réponses indiquées sont suffisantes pour mes besoins, donc je voudrais pour en fournir un autre pour n'importe qui dans la même situation.

SearchView, has focus, has search and clear button

Une SearchView est composée de différents points de vue, qui peuvent être - et dans ce cas doivent être - adressées individuellement. Si vous voulez que votre SearchView (support v7) pour geler et gris dans un état comme celui-ci, ne pas répondre à tout type d'entrée, y compris la recherche et le bouton clair, vous pouvez utiliser:

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); 

(D'ailleurs, J'ai un problème avec la réponse de deeptis searchView.setInputType(InputType.TYPE_NULL): Si vous désactivez le SearchView de cette façon et que vous cliquez dessus par la suite, le système s'attend apparemment à un clavier ouvert, même si le clavier n'est pas affiché. montré ou pas en fait ouvert - clavier.)

0

Pour supprimer SearchView Mise au point:

searchView.clearFocus(); 

Pour masquer SearchView:

searchView.setVisibility(View.GONE); 
+2

Comment la visibilité et GONE clearfocus être la réponse à " Je veux qu'il devienne grisé et non-cliquable. " – Risadinha

4

Pour désactiver une vue (par exemple SearchView) soit mis son input-type-none en XML de mise en page ou appelez view.setInputType(InputType.TYPE_NULL) du Activity .

+0

Merci de votre réponse et bienvenue à SO. –

+0

Merci beaucoup !!! –

+1

Comment l'activer à nouveau? @Deepti –

1

Vous pouvez également masquer la rechercheAfficher complètement. Vous pouvez cacher la SearchView et searchicon en faisant ceci:

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

Ensuite, vous pouvez ramener par:

searchItem.setVisible(true); 
    searchView.setVisibility(View.VISIBLE); 
0

De la réponse @outta confort, voici ma solution:

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); 
     } 
    } 
} 

Dans un autre lieu, appelez ceci:

enableSearchView(searchView, true/false);