2010-03-22 7 views
6

Sono cercare di cambiare il colore del testo e allineare elemento in filatore al centro di esso come posso fare questoCome colorare e allineare l'oggetto spinner su Android?

Ecco il mio codice

String[] li={"1","2","3"}; 
final Spinner combo = (Spinner)findViewById(R.id.widget30); 
ArrayAdapter<String> a = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, li); 
combo.setAdapter(a); 

Grazie

risposta

19

Utilizzare una visualizzazione personalizzata per quella , e specificare chiamando:

a.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

si noti che è necessario utilizzare il proprio punto di vista qui: R.id.my_simple_spinner_dropdown_item

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" /> 
+0

Molto bello ... ha funzionato per me. Sembra strano essere uno Spinner con TextView, ma sicuramente funziona. Gli Spinners in qualche modo ereditano i colori del testo senza modellarli in questo modo? Sull'emulatore, ho avuto un comportamento diverso rispetto al telefono. Il telefono mi ha dato un testo bianco su sfondo bianco ... ovviamente un problema. Questa tecnica mi consente di forzare la visibilità. –

+1

C'è un grande svantaggio di questa soluzione. Per impostare gli elementi RTL devi dargli una larghezza di fill_parent o match_parent. Come allineare gli oggetti RTL quando si utilizza wrap_content per TextView? dal momento che di solito vogliamo che la larghezza della nostra ghiera sia uguale alla larghezza dell'elemento più grande. – Reza