2013-04-24 41 views
15

Tôi đã tìm kiếm câu trả lời này nhưng không thành công.Cách thay đổi màu nền của danh sách spinner trong Android

Tôi đang tạo động cơ xoay tròn mới động, làm cách nào để thay đổi màu nền của danh sách?

màu nền hiện nay là một số màu xám đậm:

two muppets Khi tôi thay đổi thuộc tính background của spinner sang màu trắng, tôi nhận được tình trạng không mong muốn này:

two muppets Tôi muốn nó được minh bạch trong hoạt động, và chỉ khi tôi đang mở spinner (bấm vào nó), tôi muốn nền sẽ có màu trắng.

Đây là mã mà tôi tạo ra spinner với:

tôi là tạo ra các bộ chuyển đổi với:

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

bố trí spinner.xml của tôi là:

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

Bất kì lời đề nghị nào?

+0

Bạn có định nghĩa bố cục cho từng mục trong danh sách xem của mình không? –

+1

không ... nó chỉ là một danh sách mà tôi gắn vào ArrayAdapter (mAdapter) –

+1

@NoamMizrachi Kiểm tra câu trả lời của tôi ở đây http://stackoverflow.com/questions/15299194/how-to-change-the-text-background-color- của một-mở-spinner-on-android – Pragnani

Trả lời

11

tôi giải quyết nó!

Giải pháp cho việc này là thêm mã này khi tạo spinner động:

spinner.setPopupBackgroundResource(R.drawable.spinner); 

và tạo spinner.xml dưới thư mục 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> 

Giải pháp này đòi hỏi mức API của 16 và ở trên.

kết quả:

two muppets

+1

Ya u r rt. spinner.setPopupBackgroundResource (R.drawable.spinner); mức API tối thiểu là 16. Để làm việc trên tất cả các cấp thiết lập nó từ XML android: popupBackground = "@ android: color/red – Praveen

1

trong spinner.xml tôi

sử dụng này trong LinearLayout: android:background="#ffffff"

+1

Tôi nhận được kết quả như trong hình ảnh thứ hai của câu hỏi của tôi. tôi muốn nó được minh bạch trong hoạt động và chỉ khi tôi nhấn nó nền sẽ có màu trắng. –

21

Tôi không chắc chắn về câu trả lời này, bạn có thể chấp nhận hoặc bỏ qua nó.

Tôi nghĩ rằng yêu cầu này không thể thực hiện được thông qua thay đổi chủ đề. Vì hàm tạo Spinner chỉ gán giá trị trên popupBackground attr nếu bạn đã viết trong bố cục xml nếu không nó sẽ sử dụng giá trị chủ đề mặc định. như dưới đây

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

// justtry thay đổi cửa sổ bật lên nền

+2

Nó thêm một đường viền đen khó chịu xung quanh nó – StarWind0

2

Để giải quyết vấn đề của bạn, hãy thử này.

android:popupBackground="#00826b" 
Các vấn đề liên quan