2012-10-01 12 views
6

Così ho un filatore e ho avuto successo nel cambiare il colore della voce selezionata, ma io non sono in grado di cambiare il colore degli elementi nel menu a tendinaSpinner discesa voci di menu a colori (Android)

questo è il mio spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="13sp" 
    android:textColor="#33CCFF"   
/> 

e questo è il mio styles.xml

<resources> 
    <style name="AppTheme" parent="android:Theme.Light" > 
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem.Color</item> 
    <item name="android:spinnerItemStyle">@style/SpinnerItem</item> 
    </style> 
    <style name="SpinnerItem.DropDownItem.Color" parent="@android:style/Widget.DropDownItem.Spinner"> 
     <item name="android:textColor">#4FBDE8</item> 
    </style> 

    <style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem"> 
     <item name="android:textColor">#4FBDE8</item> 
    </style> 
</resources> 

c'è un modo XML in cui posso farlo?

risposta

3

Ecco la soluzione che ho trovato su un altro thread StackOverflow

<style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar"> 
    <item name="android:spinnerItemStyle">@style/SpinnerItem</item> 
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item> 
</style> 

<style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem"> 
    <item name="android:textColor">#00FF00</item> 
</style> 

<style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner"> 
    <item name="android:textColor">#FF0000</item> 
</style> 

+1

Non funziona. il menu a discesa non cambia –

1

Mentre specificare un file di risorse di layout per la filatrice, bisogna impostarlo in due punti.

  1. Pur dichiarando un nuovo ArrayAdapter

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, categories); 
    
  2. Durante l'impostazione dropDownViewResource sull'adattatore array.

    dataAdapter.setDropDownViewResource(R.layout.spinner_item_dropdown); 
    

noti che due file di layout diversi sono stati utilizzati. È possibile personalizzare le visualizzazioni nel modo seguente, definendo gli stili e utilizzando questi stili come tema nei rispettivi layout.

<style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem"> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:background">@color/black</item> 
</style> 

<style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner"> 
    <item name="android:textColor">@color/black</item> 
</style> 

Spero che questo aiuti.

+0

Non funziona nel menu a discesa –

+1

Ha funzionato per me. Potresti dire esattamente il problema che stai affrontando? –

+1

Non succede nulla, il colore del testo non cambia il terreno posteriore –