2010-08-31 6 views
16

Ich implementiere derzeit ein Autocomplete-Feld mithilfe der Komponente AutocompleteTextView.AutocompleteTextview und CompletionHintView

Ich versuche, einen Abschlusshinweis mit der Anzahl der Ergebnisse hinzuzufügen, und möchte es nur anders als das Dropdown-Listenelement stylen. Es gibt ein Attribut mit dem Namen completionHintView auf der Komponente, aber jedes Mal, wenn ich ihm ein Layout gebe, das ich vorher definiert habe, wirft es eine NullPointerException.

Hat jemand ein funktionierendes Beispiel dafür, wie man den Abschlusshinweis formatiert?

+0

Scheint, dass niemand ein Beispiel hat :) Willst du etwas Code zeigen, vielleicht können wir es durcharbeiten und sehen, was los ist? –

Antwort

5

Können Sie näher erläutern, welche Art von Styling Sie anwenden möchten?

Wenn es nur Basic-Text-Styling ist, könnten Sie wahrscheinlich eine Spannable10 erstellen und den Abschlusshinweis mit dem Ergebnis festlegen, da es eine akzeptiert. Ein Beispiel für das Erstellen einer Spannable und das Anwenden von Stilen darauf ist in this post veranschaulicht.

Wenn Sie nach einem Weg suchen, um die Parameter des TextView (z padding), um tatsächlich zu manipulieren, die source code von AutoCompleteTextView scheint einen Hinweis (Wortspiel beabsichtigt) zur Verfügung zu stellen.

private View getHintView(Context context) { 
    if (mHintText != null && mHintText.length() > 0) { 
     final TextView hintView = (TextView) LayoutInflater.from(context).inflate(
       mHintResource, null).findViewById(com.android.internal.R.id.text1); 
     hintView.setText(mHintText); 
     hintView.setId(HINT_VIEW_ID); 
     return hintView; 
    } else { 
     return null; 
    } 
} 

Dies zeigt, dass Android für die ID, die Sie angeben text1 in der Ressource-Referenz aussieht. Die einfachste Version einer solchen Ressource würde nichts anderes als eine TextView mit dieser ID enthalten:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/text1" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:padding="10dp" 
     android:textColor="#FF0000" android:textSize="16sp" /> 

Speichern oben in einer Layoutdatei (zB completion_hint_view.xml) und darauf verweisen, wie folgt aus Ihrem AutoCompleteTextView:

<AutoCompleteTextView android:id="@+id/autocomplete_textview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:completionHintView="@layout/completion_hint_view"/> 

Diese zweite Option ist wahrscheinlich am einfachsten zu verwenden und gibt Ihnen vollen Zugriff auf die TextView-Parameter. Wenn Sie in dieser Ansicht mehrere Stile auf den Text anwenden müssen, können Sie den ersten Vorschlag übernehmen, da Sie dadurch mehr Flexibilität erhalten.

Wenn keiner dieser Vorschläge ausreicht, kann ich mir einige weniger elegante Arbeitsumgebungen vorstellen, die Ihnen wahrscheinlich das gleiche Ergebnis liefern würden.

Verwandte Themen