2010-04-26 11 views
5

Ho uno Spinner con un ArrayAdapter che alimenta i valori in esso. Il layout di questa vista simile a questa:Come personalizzare il TextView all'interno di uno Spinner?

 <TextView 
      android:text="Household Income: " 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:gravity="center_vertical" /> 

     <Spinner 
      android:id="@+id/incomespinner" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:padding="2dip" /> 

Il problema è che il testo è lungo per la vista e il risultato è un molto molto brutto filatrice. Come si può vedere nello screenshot:

alt text http://janusz.de/~janusz/spinner.png

ho cercato di passare l'ID della mia TextView nella scheda, ma ogni volta che il filatore devono essere presentati ottengo un'eccezione che l'Es ho fornito non è valido:

04-26 17:38:39.695: ERROR/AndroidRuntime(4276): android.content.res.Resources$NotFoundException: Resource ID #0x7f09003a type #0x12 is not valid 

Dove devo definire il TextView? In un file xml separato? Con un viewgroup circostante?

Mi piacerebbe molto se potessi vedere un esempio di inizializzazione dell'adattatore e la definizione di textview?

risposta

3

La risposta era rimuovere il riempimento dalla definizione dello Spinner. Ogni volta che imposto il padding dello Spinner, il testo diventa fuori forma.

Il filatoio di selezione utilizza la casella di riempimento dal nove riquadro per determinare dove disegnare il contenuto. Se imposto manualmente una padding, la definizione del padding dalla casella padding verrà sovrascritta.

Se si desidera impostare un riempimento oltre a un riquadro di riempimento, è necessario avvolgere tutto all'interno di Paddinbox in un contenitore di Layout aggiuntivo.

5

Sostituire il metodo getView dell'adattatore per creare un elemento di visualizzazione elenco personalizzato.

View getView(int position, View convertView, ViewGroup parent) { 
    TextView tv = null; 
    if(covertView instanceof TextView) { 
      tv = (TextView) convertView; 
    } else { 
      tv = new TextView(this); 
      tv.setText("Awesome Text"); 
    } 
    return tv; 
} 

anche quando si crea l'adattatore è possibile passare in un layout da utilizzare per la voce, quindi in questo caso sarebbe un ConvertView RelativeLayout o LinearLayout.

1

usa /home/user/android-sdk-linux/tools/./draw9patch (è per linux), su Windows vai agli strumenti nella directory di android-sdk-windows ed esegui draw9patch.

e utilizzare in modo immagine, es:

enter image description here

Attenzione per le linee nere de nell'immagine. (Questo le linee nere sono genera da draw9patch)

risultati immagine aggiungere il file di estensione 9, es: img.9.png (IMG ESPANSIVO orizzontale e verticale)

Problemi correlati