如何更改微调器弹出窗口的背景颜色?

Mik*_*ell 11 android background popup android-2.3-gingerbread android-spinner

我正在尝试设置微调器弹出窗口的背景颜色,但我尝试过的所有内容都无法正常工作.

这是微调控件:

<Spinner
  android:id="@+id/myspinner"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="@null"
  android:drawSelectorOnTop="true" />
Run Code Online (Sandbox Code Playgroud)

当我点击它时,它会显示一个带有白色背景的弹出窗口,我想改变它.

我用来填充弹出窗口的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>
Run Code Online (Sandbox Code Playgroud)

和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> 
Run Code Online (Sandbox Code Playgroud)

向上面的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>
Run Code Online (Sandbox Code Playgroud)

这也会覆盖弹出背景,但它具有不良的附带效果.有没有办法以简单的方式实现这一目标?

谢谢!

PS:我正在使用API​​级别10(2.3.3),并且该属性android:popupBackground不存在.

Rud*_*kar 8

在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"
        >
Run Code Online (Sandbox Code Playgroud)

  • 怎么样当spinnerMode =“ dialog”?在那种模式下,`popupBackground`似乎被忽略了。 (2认同)

Mik*_*ell 5

上述解决方案均不适合我.

解决方案是在传递给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;
}
Run Code Online (Sandbox Code Playgroud)