2013-04-24 78 views
15

我搜索了這個答案,但沒有成功。如何在Android中更改微調器的列表背景顏色

我正在動態創建一個新的微調,如何更改我的列表背景顏色?

當前背景色是一些深灰色:

two muppets 當我改變了微調的背景屬性爲白色,我得到這個不必要的情況:

two muppets 我希望它是透明的活動,只有當我打開微調(按下它),我想背景將是白色的。

這裏是我與創建微調代碼:

我與創建適配器:

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

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

任何建議?

+0

您是否有每個listview項目的佈局定義? – 2013-04-24 17:41:27

+1

不...這只是一個列表,我附加到ArrayAdapter(mAdapter) – 2013-04-24 17:43:45

+1

@NoamMizrachi檢查我的答案在這裏http://stackoverflow.com/questions/15299194/how-to-change-the-text-background-color-打開微調在Android上 – Pragnani 2013-04-24 17:46:36

回答

11

我解決它!

對此的解決方案是增加動態創建微調時這個代碼:

spinner.setPopupBackgroundResource(R.drawable.spinner); 

和創建可繪製對象文件夾下spinner.xml:

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

該溶液需要16的API級以上。

結果:

two muppets

+1

雅緻。 spinner.setPopupBackgroundResource(R.drawable.spinner);最低的API級別是16.要在所有級別上設置它從XML android:popupBackground =「@ android:color/red – Praveen 2014-03-11 13:06:50

1

在我spinner.xml

使用這種在LinearLayout中:android:background="#ffffff"

+1

我收到了我的問題的第二個圖像中的結果。我希望它在活動中是透明的,只有當我按下時,背景纔會變白。 – 2013-04-25 08:54:25

21

我不知道這個答案,你可以接受或忽略它。

我覺得這個要求不可能通過主題的變化。因爲只有在layout xml中寫入時,Spinner構造函數纔會在popupBackground attr上賦值,否則將使用默認主題值。像下面

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

// justtry變更彈出背景

+2

它在它周圍增加了一個令人討厭的黑色邊框 – StarWind0 2015-10-13 05:56:51

2

解決您的問題,試試這個。

android:popupBackground="#00826b" 
相關問題