Développer et donner le focus à SearchView automatiquement
Je suis du développement d'une application où l'utilisateur appuie sur "Rechercher" icône dans la ActionBar
et un SearchView
est rendu visible en haut de l'écran.
Mon problème est que le SearchView
n'est pas une priorité, ni élargi de sorte que l'utilisateur doit appuyer sur le bouton de recherche sur la Searchview
à faire développer et de mettre le clavier.
Comment cela doit-il être résolu?
InformationsquelleAutor SweSnow | 2012-07-29
Vous devez vous connecter pour publier un commentaire.
Pour faire de la SearchView développée par défaut, appelez
setIconifiedByDefault(false)
sur elle quand vous l'utilisez (par exemple, dansonCreateOptionsMenu(..)
ouonPrepareOptionsMenu(..)
). J'ai trouvé dans la plupart des cas, ce sera de donner le focus automatiquement, mais si ce n'appelez simplementrequestFocus()
sur elle aussi.requestFocus()
appel dansonPrepareOptionsMenu(..)
a fait le tour pour moi.requestFocus
ne fonctionne pas pour moi. De "focus", vous pouvez appelersetIconified
avecfalse
app:showAsAction="always"
. Quand je l'ai enlevé de l'autofocus, l'icône a disparu et les 3 points icône est apparuVous pouvez aussi appeler expandActionView() la méthode afin de le forcer:
Élément de recherche dans la Barre d'Action de mise en page:
expandActionView()
directement sur lasearchMenuItem
, vous devriez l'utiliser à la place:MenuItemCompat.expandActionView(searchMenuItem)
.searchMenuItem.expandActionView();
Si vous voulez l'avoir
iconifiedByDefault
, cela a fonctionné pour moi.setFocusable
etsetIconified
sont nécessaires.Mise à jour: Si vous Utilisez
android.support.v7.widget.SearchView
le comportement très différent.clearFocus
est nécessaire si vous ne voulez pas le clavier pop-up tout le temps. Pour une raison quelconque, le menu est recréé tout le temps, lors de l'utilisation de appcompat.Si vous l'utilisez dans la mise en page, vous pouvez appeler
mSearchView.onActionViewExpanded()
View
, pasMenuItem
Cela a fonctionné pour moi :
Dans la racine mise en page :
SearchView définis comme suit :
La différence avec l'app tag.
Si vous utilisez à l'intérieur d'une activité, vous devez utiliser
si vous utilisez à l'intérieur du menu des options, vous devez utiliser
Remarque: il ne fonctionne que pour SearchView
ces deux situations sont travaillé pour moi.
Cela a fonctionné pour moi:
Vous pouvez utiliser le
SearchView#setIconified()
méthode sur un SearchView gérer dans votre code Java. Plus ici:http://developer.android.com/reference/android/widget/SearchView.html#setIconified(booléen)
Vous pouvez également faire usage de
SearchView#setIconifiedByDefault()
. Plus d'infos ici:http://developer.android.com/reference/android/widget/SearchView.html#setIconifiedByDefault(booléen)
utiliser cette
@Pascalius réponse a fonctionné pour moi. Mais à chaque fois que vous fermez le SearchView, et cliquez de nouveau, vous avez perdu le Focus. J'ai donc inséré le code dans un
setOnMenuItemClickListener
comme ceci:MenuItemCompat de SearchView possède une propriété nommée maxWidth.
utiliser la largeur de l'écran au lieu de xxx offcourse
android:iconifiedByDefault="true"
dans votre fichier xml
Je suis en utilisant android.widget Searchview et l'icône par défaut.Ci-dessous le code xml m'a aidé à faire élargir et de l'autofocus sur l'affichage de la recherche,lorsqu'il est cliqué:
Pour Appcompat Searchview vous pouvez utiliser cette méthode: