我正在尝试设置微调器弹出窗口的背景颜色,但我尝试过的所有内容都无法正常工作。
这是微调控件:
<Spinner
android:id="@+id/myspinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@null"
android:drawSelectorOnTop="true" />
当我点击它时,它显示一个带有白色背景的弹出窗口,我想改变它。
我用来填充弹出窗口的xml行是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:paddingBottom="@dimen/padding_medium"
android:layout_marginBottom="@dimen/padding_medium"
android:orientation="vertical">
..........
</RelativeLayout>
和drawable background list_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@color/green" /> <!-- @drawable/tab_press -->
<!-- Selected -->
<item
android:state_selected="true"
android:drawable="@color/green" /> <!-- @drawable/tab_press -->
</selector>
向上面的xml添加默认状态是可以的,但是微调器主控件显示具有该背景颜色的项目,我不希望这样。
我尝试过的另一件事是在styles.xml中将应用程序背景颜色设置为黑色
<style name="AppTheme" parent="android:Theme.Light">
<item name="android:background">#000000</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:typeface">sans</item>
</style>
这也会覆盖弹出背景,但它具有不良的附带效果。有没有办法以简单的方式实现这一目标?
谢谢!
PS: 我正在使用API级别10(2.3.3) 和属性 android:popupBackground
不存在。
在xml的微调器声明中使用android:popupBackground =“@ drawable / Yourxmlfile.xml”。
对于Eg。
<Spinner
android:id="@+id/spinner3"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_weight="50"
android:background="@drawable/gradient_spinner"
android:gravity="center"
android:paddingLeft="40dp"
android:popupBackground="@drawable/radialfront"
>
上述解决方案均不适合我。
解决方案是在传递给spinner的适配器中写入方法getDropDownView中的不同实现,以显示具有自定义颜色的不同布局:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vista = convertView;
// layout for spinner widget
if (vista==null) {
LayoutInflater inflater = actividad.getLayoutInflater();
vista = inflater.inflate(R.layout.fila_colores_spinner, null);
}
return vista;
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View vista = convertView;
//layout for spinner popup
if (vista==null) {
LayoutInflater inflater = actividad.getLayoutInflater();
vista = inflater.inflate(R.layout.fila_colores_spinner_popup, null);
}
return vista;
}
它很棒!!
- 使用想要的颜色(以及其他属性)声明带有文本视图的布局
想改变)
- textView的id必须是text1 (因为这是在声明中声明的id
R.android中的默认布局
你的锭床工人)
- 在您的微调器适配器中提供此布局
例如:
在res \ layout \ custom_spinner_item.xml中放这个:
TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#B2B5B7"
android:gravity="center_horizontal"
android:textSize="20dp"
然后将此布局提供给适配器:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MyActivity.this,
R.layout.custom_spinner_item, strings);
<Spinner
android:id="@+id/myspinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:drawSelectorOnTop="true" />
尝试这个..