2013-04-24 19 views
15

Ich suchte nach dieser Antwort, war aber nicht erfolgreich.Wie man die Hintergrundfarbe einer Spinnerliste in Android ändert

Ich erstelle einen neuen Spinner dynamisch, wie kann ich die Hintergrundfarbe meiner Liste ändern?

die aktuelle Hintergrundfarbe ist etwas dunkelgrau:

two muppets Wenn ich Ändern der Hintergrundattribut Spinner weiß, ich bin immer diese unerwünschte Situation:

two muppets ich es sein will transparent in der Aktivität, und nur wenn ich den Spinner öffne (drücken Sie darauf), möchte ich, dass der Hintergrund weiß ist. Hier

ist der Code, Ich schaffe den Spinner mit:

Ich erstelle den Adapter mit:

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

mein spinner.xml Layout:

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

irgendein Vorschlag?

+0

Haben Sie Layoutdefinitionen für jedes Ihrer Listview-Elemente? –

+1

Nein ... es ist nur eine Liste, die ich an ArrayAdapter (mAdapter) angeschlossen habe –

+1

@NoamMizrachi Überprüfen Sie meine Antwort hier http://stackoverflow.com/questions/15299194/how-to-change-the-text-background-color- von einem geöffneten Spinner-on-Android – Pragnani

Antwort

11

ich es gelöst!

Die Lösung dafür ist, diesen Code hinzuzufügen, wenn die Spinner dynamisch erstellen:

spinner.setPopupBackgroundResource(R.drawable.spinner); 

und spinner.xml unter Drawable Ordner zu erstellen:

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

Diese Lösung erfordert API-Ebene von 16 und darüber.

das Ergebnis:

two muppets

+1

Ya r rt. spinner.setPopupBackgroundResource (R.drawable.spinner); Die Mindest-API-Stufe ist 16. Um auf allen Ebenen zu arbeiten, setze sie auf XML android: popupBackground = "@ android: color/red – Praveen

1

in meinem spinner.xml

Verwendung dieses in Linearlayout: android:background="#ffffff"

+1

Ich bekomme das Ergebnis wie in meinem zweiten Bild meiner Frage. Ich möchte, dass es in der Aktivität transparent ist und nur wenn ich es drücke, wird der Hintergrund weiß sein. –

21

Ich bin über diese Antwort nicht sicher sind, können Sie es akzeptieren oder ignorieren.

Ich denke, dass diese Anforderung nicht durch Themenänderungen möglich ist. Da der Spinner-Konstruktor den Wert für popupBackground attr nur dann zuweist, wenn Sie in das Layout-XML geschrieben haben, wird andernfalls der Standard-Designwert verwendet. wie unten

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

// justtry Ändern Popup Hintergrund

+2

Es fügt einen fiesen schwarzen Rand drumherum – StarWind0

2

Ihr Problem zu lösen, versuchen Sie dies.

android:popupBackground="#00826b" 
Verwandte Themen