SearchView focalisé lors de la dissimulation du menu ActionBar

J'ai une barre d'action avec un SearchView. Les éléments de menu cachés / débordements sont affichés à droite dans une liste déroulante lorsque le bouton de menu est sélectionné. Lorsque le menu déroulant est masqué, le SearchView est concentré et le clavier s'affiche. Existe-t-il un moyen d'empêcher l'affichage du clavier (à l'exception du cas où le SearchView est touché)?

Cordialement, Julius.

  • Searchview ne fonctionne pas depuis la compatibilité de l'application
  • La boîte de dialogue de recherche n'est pas appeléeRecherche de recherche ()
  • Android Market, Résultats de la recherche position Mystery
  • Changer TextColor dans SearchView en utilisant la barre d'outils Android
  • Modification de la barre d'action searchview suggère la couleur du texte
  • Android: comment déclarer une activité principale et consultable?
  • Modifier le code ajouté ci-dessous: Voici comment je l'initialise:

    SearchManager searchManager = (SearchManager) mActivity.getSystemService(Context.SEARCH_SERVICE); ((SearchView) mSearchView).setSearchableInfo(searchManager.getSearchableInfo(mActivity.getComponentName())); mSearchView.setIconifiedByDefault(mIconified); mSearchView.setOnQueryTextListener(this); mSearchView.setOnCloseListener(this); mSearchView.setFocusable(false); mSearchView.setFocusableInTouchMode(false); if(null!=mQuery) mSearchView.setQuery(mQuery, false); 

    Modifier 2:

    Voici ce que je fais lorsque l'utilisateur veut lancer la recherche:

      @Override public boolean onQueryTextSubmit(String query) { // Hide keyboard InputMethodManager imm = (InputMethodManager) mActivity.getSystemService( FragmentActivity.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); 

      mSearchView.setFocusable(false); mSearchView.setFocusableInTouchMode(false); return true; } 

  • Changer TextColor dans SearchView en utilisant la barre d'outils Android
  • Android SearchRecentSuggestions - les suggestions ne s'affichent pas lors de la saisie dans SearchView
  • Vérifiez si le périphérique Android possède un bouton de recherche
  • Comment démarrer par programme une recherche vocale Google Now?
  • Comment définir la mise au point sur Thumb pour Range Seek Bar en mode Accessibilité?
  • Android: Fournir une autosuggestion auto dans les sites Android Api?
  • 6 Solutions collect form web for “SearchView focalisé lors de la dissimulation du menu ActionBar”

    Essayez appel setFocusable (faux) sur SearchView lorsque vous l'inittez.

    Essayez d'appeler mSearchView.clearFocus() sur votre initialisation de la recherche. Cela a fonctionné pour moi quand j'ai eu un problème similaire.

    J'ai créé une vue de recherche lors de la création du menu des options dans un fragment et aucune des méthodes ci-dessus ne fonctionnaient pour moi.

    Cependant, j'ai réussi à résoudre le problème en tenant une référence à la recherche, en ne définissant pas le paramètre iconifié SearchView dans onCreateOptionsMenu (), mais en le mettant sur une publication lorsque le fragment a repris comme suit:

     @Override public void onResume() { super.onResume(); getView().post(new Runnable() { public void run() { if (mFilterView.isIconfiedByDefault()) { mFilterView.setIconifiedByDefault(false); mFilterView.clearFocus(); } } }); } 

    Appelez la demandeFocus () pour une autre vue, idéalement, votre vue des résultats, par exemple

     _resultsFragment.getView().requestFocus(); 

    Je viens de tirer mes cheveux sur le même problème.

    J'ai essayé Android: focusable = "false". J'ai essayé InputMethodManager. J'ai essayé de créer une image fictive pour prendre l'accent mais rien n'a fonctionné.

    Je l'ai finalement résolu avec le code suivant à l'intérieur deCreateOptionsMenu ():

     final ViewTreeObserver observer = mSearchView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { observer.removeOnGlobalLayoutListener(this); mSearchView.clearFocus(); } }); 

    Le problème était que, à chaque étape du cycle de vie du Fragment, le menu n'avait pas encore été créé. La méthode onCreateOptionsMenu () était appelée après onResume (), mais seulement sur certains appareils sur lesquels j'ai testé, ce qui est vraiment étrange.

    Le code ci-dessus vous assure que la mise au point s'effectue après la modification de la mise au point lors de la création de la page.

    J'espère que cela aidera quelqu'un d'autre, ça m'a sauvé beaucoup de temps pour le savoir dès le début.

    Lorsque vous configurez votre SearchView dans votre fichier de mise en page XML (si vous utilisez un), utilisez ceci:

     android:focusable="false" 

    Avec cette approche, votre SearchView ne prendra pas l'accent jusqu'à ce que vous le touchez … peu importe où ou si vous l'incite dans votre code, ou vous cachez votre menu ou toute autre activité qui ne s'est pas produite dans votre débogage . Cela élimine également le besoin éventuel de suivre l'endroit où vous appelez

    SetFocusable (false) // fait essentiellement la même chose

    Dans votre code plusieurs fois comme le suggère la réponse acceptée.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.