2013-04-24 6 views
15

Ho cercato questa risposta ma non ho avuto esito positivo.Come modificare il colore di sfondo dell'elenco di uno spinner in Android

Sto creando una nuova filatura in modo dinamico, come posso cambiare il colore di sfondo dell'elenco?

il colore di sfondo corrente è un po 'grigio scuro:

two muppets Quando sto cambiando attributo background del filatore al bianco, sto ottenendo questa situazione indesiderata:

two muppets io voglio che sia trasparente nell'attività e solo quando apro lo spinner (premendolo sopra), voglio che lo sfondo sia bianco.

Ecco il codice che sto creando il filatore con:

Sto creando l'adattatore con:

mAdapter = new ArrayAdapter<String>(getApplicationContext(), 
            R.layout.spinner, R.id.Language, lang); 
    LinearLayout layoutHolder = 
         (LinearLayout)findViewById(R.id.RegisterFormLayout); 
    Spinner spinner = new Spinner(getApplicationContext()); 
    LayoutParams layParams= new 
       Spinner.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,  
             ViewGroup.LayoutParams.WRAP_CONTENT); 
    spinner.setLayoutParams(layParams); 
    spinner.setAdapter(mAdapter); 
    spinner.setOnItemSelectedListener(new myOnItemSelectedListener()); 
    if (lang != null) 
     spinner.setSelection(lang.intValue()); 
    spinnerList.add(spinner); 
    layoutHolder.addView(spinner); 

mio layout spinner.xml è:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:id="@+id/SpinnerLayout"> 

<TextView 
    android:id="@+id/Language" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#ffffff" 
    android:background="#00ffffff" 
    android:padding="5dp" /> 
</LinearLayout> 

qualche suggerimento?

+0

Avete le definizioni di layout per ciascuna delle vostre voci listview? –

+1

no ... è solo una lista che ho attaccato al ArrayAdapter (mAdapter) –

+1

@NoamMizrachi Controllare la mia risposta qui http://stackoverflow.com/questions/15299194/how-to-change-the-text-background-color- of-a-open-spinner-on-android – Pragnani

risposta

11

ho risolto!

La soluzione per questo è di aggiungere questo codice durante la creazione del filatore dinamicamente:

spinner.setPopupBackgroundResource(R.drawable.spinner); 

e per creare spinner.xml nella cartella Drawable:

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="#ffffff" /> 
</shape> 

Questa soluzione richiede livello di API di 16 e al di sopra.

il risultato:

two muppets

+1

Ya r rt. spinner.setPopupBackgroundResource (R.drawable.spinner); il livello minimo dell'API è 16. Per lavorare su tutti i livelli impostarlo da XML android: popupBackground = "@ android: color/red – Praveen

1

nel mio spinner.xml

uso questo LinearLayout: android:background="#ffffff"

+1

sto ottenendo il risultato come nella mia seconda immagine della mia domanda. voglio che sia trasparente nell'attività e solo quando lo preme lo sfondo sarà bianco. –

21

io non sono sicuro di questa risposta, è possibile accettare o ignorare.

Penso che questo requisito non sia possibile attraverso i cambiamenti del tema. Poiché il costruttore Spinner assegna il valore su popupBackground attr solo se hai scritto in layout xml altrimenti utilizzerà il valore di tema predefinito. come qui di seguito

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:popupBackground="@android:color/holo_green_dark" /> 

// justtry cambiando comparsa sfondo

+2

Aggiunge un brutto bordo nero attorno ad esso – StarWind0

2

per risolvere il problema, provare questo.

android:popupBackground="#00826b" 
Problemi correlati