Как изменить цвет фона списка счетчиков в Android

Я искал этот ответ, но не увенчался успехом.

Я создаю новый spinner динамически, как я могу изменить цвет фона списка?

текущий цвет фона имеет темно-серый цвет:

two muppets Когда я изменяю атрибут фона счетчика на белый, я получаю эту нежелательную ситуацию:

two muppets Я хочу, чтобы он был прозрачным в активности, и только когда я открываю счетчик (нажмите на него), я хочу, чтобы фон был белым.

Вот код, который я создаю spinner:

Я создаю адаптер с помощью:

    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>

любое предложение?

Ответы

Ответ 1

Я решил это!

Решением для этого является добавление этого кода при динамическом создании счетчика:

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>

Для этого решения требуется уровень API 16 и выше.

результат:

two muppets

Ответ 2

Я не уверен в этом ответе, вы можете принять или проигнорировать его.

Я думаю, что это требование невозможно с помощью изменений темы. Поскольку конструктор Spinner присваивает значение для popupBackground attr, только если вы написали в макете xml, иначе он будет использовать значение темы по умолчанию. как ниже

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

//justtry изменение всплывающего фона

Ответ 3

Чтобы решить вашу проблему, попробуйте это.

android:popupBackground="#00826b"

Ответ 4

в моем spinner.xml

используйте это в LinearLayout: android:background="#ffffff"