8
votes

Comment ajouter une liste déroulante à côté du champ de saisie de recherche dans Android?

Dans la recherche à l'échelle du système sur mon désire HTC (Froyo), je vois un peu de déposer à gauche au champ Entrée de recherche qui permet de sélectionner l'endroit où je souhaite rechercher (tous, Web, applications).

Comment puis-je mettre en œuvre cette dans une application de la mine ? Le didacticiel de recherche sur le site Google Developer ne résout pas cela.

Donc, dans un scénario comme ci-après, pris de l'Android Docs,

J'aimerais cliquer sur les livres, puis obtenir une sorte de menu à par exemple. Sélectionnez "Mots", "Rubriques" comme mode de recherche.

Mise à jour : Je ne cherche pas la boîte de dialogue QuickAction même, mais plutôt comment attacher quelque chose à l'icône de livres qui réagit en contact, de sorte que je puisse attacher la quickaction ou une nouvelle activité ou. .. et je souhaite utiliser la boîte de dialogue de recherche Android standard, comme décrit dans HTTP : //developer.android.com/guide/topics/search/search-dialog.html


0 commentaires

4 Réponses :


2
votes

Il ne s'agit que d'une vue personnalisée qui est rendue lorsque vous frappez ce bouton avec une animation de fantaisie.

Cela n'a rien à voir avec le cadre de recherche en soi. Vous vient de montrer une mise en page personnalisée (avec une animation de fantaisie si vous le souhaitez) et définissez une valeur en cliquant sur l'une des icônes. C'est ça.


1 commentaires

Toute astuce sur la manière de mettre en œuvre cela dans le cadre de recherche "normal"?



1
votes

Je pense que votre recherche est appelée "Dialogue QuickAction".

voici un tutoriel qui devrait Avez-vous bien sur votre chemin.

mise à jour par interrogateur (Paste de commentaires):

ah je vois. Eh bien, vous avez besoin de l'ID de l'icône afin de mettre en œuvre l'ONCLICKLISNER (). Vous serez peut-être coincé simplement avec un widget de recherche et de la mise en œuvre la plus à zéro. Ou peut-être, avec la boîte de dialogue de recherche implémentée et en cours d'exécution, utilisez HierarchyViewer pour voir si l'icône a un identifiant. Peut-être que vous aurez de la chance et cela aura une unique. Je suis à court d'idées pour l'instant.


6 commentaires

Je ne demande pas la QuickAction elle-même, mais comment attacher cela à la barre de recherche


Bien juste mettre un onclicklistener () (comme le fait le tut) sur la vue. Dans votre exemple d'image ci-dessus, je suppose que vous donneriez la vision de l'image des livres à onclicklistener ().


L'icône de livres est l'icône de l'application selon développeur.android.com/Guide /topics/search/search-dialog.html


Ah, je vois. Eh bien, vous avez besoin de l'ID de l'icône afin de mettre en œuvre l'ONCLICKLISNER (). Vous serez peut-être coincé simplement avec un widget de recherche et de la mise en œuvre la plus à zéro. Ou peut-être, avec la boîte de dialogue de recherche implémentée et en cours d'exécution, utilisez HierarchyViewer pour voir si l'icône a un identifiant. Peut-être que vous aurez de la chance et cela aura une unique. Je suis à court d'idées pour l'instant.


HierarchyViewer est une très bonne idée ici. L'image a en effet un identifiant de ID / Search_app_icon


doux. De toute évidence, vous pouvez maintenant identifier la vue et joindre un OnClickListener pour activer la QuickAction.



1
votes

Ces options (et leurs icônes) sont déterminées par la liste des éléments pouvant être recherchés dans les paramètres Android (Paramètres-> Recherche-> éléments interrogeables au moins dans mon téléphone). Si vous voulez ajouter une action de recherche à ce menu, jetez un oeil à ceci:

http://developer.android.com/ Guide / thèmes / recherche / ajout de mesure-suggestions.html # QSB

Activation des suggestions sur un périphérique

Lorsque votre application est configurée pour fournir des suggestions Recherche rapide Box, il est pas réellement permis de fournir des suggestions Recherche rapide Box, par défaut. Ce sont les utilisateurs de choix d'inclure des suggestions de votre application dans le rapide Barre de recherche. Pour activer la recherche suggestions de votre application, la l'utilisateur doit ouvrir « éléments » interrogeables (en Paramètres> Recherche) et activer votre application en tant que point consultable.

Chaque application qui est disponible à Recherche rapide a une entrée dans la La page des articles interrogeables. Les entrée comprend le nom du application et une brève description de ce contenu peut être recherché de la application et mis à disposition pour suggestions de recherche rapide. À définir le texte de description pour votre application de recherche, ajoutez le android: searchSettingsDescription attribut à votre interrogeable configuration. Par exemple:

http://developer.android.com/guide/topics/ recherche / interrogeable config.html

Recherche rapide attributs Box

Pour faire vos suggestions de recherche personnalisées disponible pour recherche rapide, vous besoin certains des éléments suivants attributs:

android: includeInGlobalSearch Boolean. (Requis pour fournir des suggestions de recherche dans Recherche rapide Box.) « True » si vous voulez que votre suggestions à inclure dans la globalement accessible de recherche rapide. L'utilisateur doit toujours permettre à votre application en tant que point consultable en les paramètres de recherche du système avant votre suggestions apparaîtront dans rapide Barre de recherche. android: searchSettingsDescription Chaîne de caractères. Fournit une brève description des suggestions de recherche que vous fournissez de recherche rapide, qui est affiché dans la interrogeable la saisie des articles pour votre application. Ton description doit décrire de façon concise le contenu est consultable. Pour par exemple, « Les artistes, les albums et les pistes » pour une application musicale, ou « Saved notes » pour une application Bloc-notes. android: queryAfterZeroResults Boolean. « True » si vous voulez que votre fournisseur de contenu à invoquer pour surensembles de requêtes qui ont retourné aucun résultat dans le passé. Pour Par exemple, si votre fournisseur de contenu aucun résultat pour retour « bo », il devrait être requiried pour « bob ». Si ensemble « false », supersets sont ignorés une seule session ( « bob » ne invoquer une requery). Cela ne dure que la vie de la boîte de dialogue de recherche ou la la vie de l'activité lors de l'utilisation du widget de recherche (lorsque la boîte de dialogue de recherche ou l'activité est rouverte, les requêtes « bo » votre fournisseur de contenu à nouveau). Les la valeur par défaut est false.

Donc, si vous voulez ajouter une option pour rechercher des mots ou des rubriques, et vous avez une activité qui permet à cette recherche, vous pouvez ajouter cet élément indexable (s) à la liste. Ils ne seront disponibles que si l'utilisateur veut, cependant.


3 commentaires

+1 Comme j'ai appris à propos de cette «incluse dans la recherche». Mais comme je l'ai écrit, je le souhaite dans une application de la mine, où je peux utiliser la liste déroulante pour sélectionner les catégories au sein de ma recherche.


Ok, j'ai mal compris la partie "dans une application". Donc, vous ne voulez pas une option de recherche globale, mais uniquement dans votre application. J'essayais de trouver le code source pour la classe SearchView, mais il manque à [plate-forme / frameworks / base.git] / core / java / android / widget / (ou tout autre endroit que je cherchais)


@Heiko j'ai trouvé cela qui pourrait être utile de suivre et peut-être imiter la mise en œuvre: grepcode.com/file/repository.grepcode.com/java/ext/... Modifier: Ed déjà :/



2
votes

Vous ne pouvez pas modifier la boîte de dialogue de recherche du système. Donc, si vous voulez des personnalisations comme faire un menu déroulant apparaissent lorsque l'utilisateur touche l'icône, vous devrez mettre en œuvre votre propre boîte de dialogue. Cela rendrait votre recherche non standard afin que je ne le conseillerais pas.

Cependant, si je ne peux pas vous en parler, vous pouvez voir comment la boîte de dialogue de recherche intégrée de Android est implémentée ici:


0 commentaires