2011-05-03 6 views
3

Je reçois déjà la suggestion de recherche en tapant le champ de recherche de la boîte de dialogue de recherche. Lors de la saisie en mode Portrait, les résultats sont affichés dans la boîte de dialogue de recherche. Mais quand je passe en mode paysage, le champ de saisie de texte de searchdialog devient fullscreen (j'espère que vous savez ce que je veux dire) et les suggestions de recherche ne pouvaient plus être vues. Je sais par exemple de google maps qu'en mode paysage les suggestions de recherche sont affichées sous le "grand" champ de saisie de texte ... Quel code dois-je taper pour obtenir cette "vue" en tapant en mode paysage?Afficher les suggestions de recherche en tapant en mode paysage

Merci!

Thomas

+0

Pouvez-vous afficher le code de disposition de cet écran? –

Répondre

5

Si vous voulez que vos suggestions pour apparaissent dans le paysage, vous devez faire une des opérations suivantes:

  • Ajouter SUGGEST_COLUMN_QUERY à votre suggestion résultats
  • Ajouter android:searchMode="queryRewriteFromText" ou `` Android : searchMode = "queryRewriteFromData" to your searchable.xml`

Cependant, je pense que pour sugges Il est plus agréable de montrer simplement la fenêtre normale au lieu d'un clavier plein écran. Vous pouvez y parvenir en ajoutant android:imeOptions="flagNoExtractUi" à votre searchable.xml.

Et c'est tout. Si vous êtes curieux, voici comment je pisté cette baisse:

Hierarchy Viewer vous dira que la boîte de dialogue de recherche est mis en œuvre par SearchDialog, qui utilise un AutoCompleteTextView pour la vue du texte d'achèvement. Sa fonction buildDropDown() appelle Filter.convertResultToString() (à travers convertSelectionToString()) sur les articles retournés par le mAdapter.getItem() puis les passe à InputMethodManager.displayCompletions() (qui est responsable des suggestions que vous voulez). Dans le cas de SearchDialog, l'adaptateur est un SuggestionsAdapter. C'est une sous-classe de CursorAdapter, dont la méthode getFilter() renvoie une classe CursorFilter, qui implémente convertResultToString() en déléguant simplement à convertToString() sur la classe d'adaptateur. SuggestionsAdapter implémente enfin cette méthode comme suit:

public CharSequence convertToString(Cursor cursor) { 
    if (cursor == null) { 
     return null; 
    } 

    String query = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_QUERY); 
    if (query != null) { 
     return query; 
    } 

    if (mSearchable.shouldRewriteQueryFromData()) { 
     String data = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_INTENT_DATA); 
     if (data != null) { 
      return data; 
     } 
    } 

    if (mSearchable.shouldRewriteQueryFromText()) { 
     String text1 = getColumnString(cursor, SearchManager.SUGGEST_COLUMN_TEXT_1); 
     if (text1 != null) { 
      return text1; 
     } 
    } 

    return null; 
} 

... qui se traduit par les recommandations du premier paragraphe ci-dessus.

Questions connexes