我正在动态创建一个新的微调器,如何更改列表背景颜色?
当前背景颜色为深灰色:
当我将微调器的背景属性更改为白色时,我遇到了这种不必要的情况:
我希望它在活动中是透明的,只有当我打开微调器时(按下它),我希望背景为白色。
以下是我用以下代码创建微调器的代码:
我正在创建适配器:
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 :(得分:23)
我认为通过主题更改无法实现此要求。因为Spinner构造函数只有在print xml中写入时才会在popupBackground attr上赋值,否则它将使用默认主题值。如下所示
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:popupBackground="@android:color/holo_green_dark" />
//只是尝试更改弹出背景
答案 1 :(得分:12)
解决方法是在动态创建微调器时添加此代码:
spinner.setPopupBackgroundResource(R.drawable.spinner);
并在Drawable文件夹下创建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及以上。
结果:
答案 2 :(得分:2)
要解决您的问题,请尝试此操作。
android:popupBackground="#00826b"
答案 3 :(得分:1)
在我的spinner.xml中
在LinearLayout中使用它:android:background="#ffffff"