2010-08-31 13 views
16

Attualmente sto implementando un campo di completamento automatico utilizzando il componente AutocompleteTextView.AutocompleteTextview e CompletionHintView

Sto cercando di aggiungere un suggerimento di completamento con il numero di risultati, e voglio solo modificarlo in modo diverso dall'elemento dell'elenco a discesa. C'è un attributo chiamato completionHintView sul componente, ma ogni volta che gli assegno un layout precedentemente definito esso genera uno NullPointerException.

Qualcuno ha un esempio funzionante su come modellare il suggerimento di completamento?

+0

Sembra che nessuno abbia un esempio :) Vuoi mostrare del codice, quindi forse possiamo lavorarci sopra e vedere cosa c'è che non va? –

risposta

5

Puoi approfondire il tipo di stile che desideri applicare?

Se si tratta solo dello stile di testo di base, è possibile creare un Spannable e impostare il suggerimento di completamento con il risultato, poiché accetta uno CharSequence. Un esempio di creazione di uno Spannable e di applicazione di stili è illustrato in this post.

Se siete alla ricerca di un modo per manipolare in realtà i parametri del (per esempio imbottitura) TextView, il source code di AutoCompleteTextView sembra fornire un suggerimento (gioco di parole).

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; 
    } 
} 

Questo rivela che Android cerca l'id text1 nel riferimento risorsa specificata. La versione più semplice di una tale risorsa conterrebbe nulla, ma un TextView con questo ID:

<?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" /> 

Salva sopra in un file di layout (ad esempio completion_hint_view.xml) e di riferimento come segue dal AutoCompleteTextView:

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

Questa seconda opzione è probabilmente la più semplice da usare e ti darà pieno accesso ai parametri di TextView. Se hai bisogno di applicare più stili al testo in questa vista, puoi incorporare il primo suggerimento, poiché ciò ti darà maggiore flessibilità.

Se nessuno di questi suggerimenti è sufficiente, posso pensare ad un lavoro meno elegante che probabilmente ti permetterebbe di ottenere lo stesso risultato.

Problemi correlati