【问题标题】:How can I change spinner background color?如何更改微调器背景颜色?
【发布时间】:2017-04-06 12:28:22
【问题描述】:

如何更改微调器背景颜色?

风格中的这种黑色。

如何更改微调器弹出的样式颜色?

我想将背景颜色更改为白色而不是黑色。我该如何改变?

微调器

<Spinner
    android:id="@+id/spinner"
    android:layout_width="100dp"
    android:layout_marginTop="1dp"
    android:layout_height="wrap_content"
    android:background="@drawable/spinner_bg"
    android:layout_marginLeft="1dp"/>
 

spinnerbg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/InputBg1" />
    </item>
    <item android:gravity="center_vertical|right" android:right="8dp">
        <layer-list>
            <item android:width="12dp" android:height="12dp" android:background="#fff" android:gravity="center" android:bottom="10dp">
                <rotate
                    android:fromDegrees="45"
                    android:toDegrees="45">
                    <shape android:shape="rectangle">
                        <solid android:color="#ffffff" />
                        <stroke android:color="#ffffff" android:width="1dp"/>
                    </shape>
                </rotate>
            </item>
            <item android:width="20dp" android:height="10dp" android:bottom="21dp" android:background="#fff" android:gravity="center">
                <shape android:shape="rectangle">
                    <solid android:color="@color/InputBg1"/>
                </shape>
            </item>
        </layer-list>
    </item>
</layer-list>

【问题讨论】:

    标签: android android-spinner android-styles


    【解决方案1】:

    试试这个..在 res/values/styles.xml::-中更改样式

    <resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>
    
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
    </style>
    
    <style name="mySpinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
        <item name="android:textColor">@android:color/white</item>
    </style>
    

    【讨论】:

    • 我必须在哪里包含这种风格?
    【解决方案2】:

    您可以像这样在 xml 中设置微调器的背景颜色:

    android:background="YOUR_HEX_COLOR_CODE"
    

    如果你在微调器中使用下拉菜单,你可以像这样设置它的背景颜色:

    android:popupBackground="YOUR_HEX_COLOR_CODE"
    

    要更改文本颜色我建议使用自定义文本布局

    为此文件中的文本提供您自定义的颜色和大小。

    spinner_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <TextView  
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:gravity="left"  
        android:textColor="YOUR_HEX_COLOR_CODE"         
        android:padding="5dip"
        />
    

    现在使用此文件显示您的微调器项目,例如:

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,list);
    

    您不需要设置下拉资源。 spinner_item.xml 只会在微调器中显示您的项目。

    【讨论】:

    • 要么给另一种颜色。白色背景下看不到白色文字
    • 如何更改文本颜色?
    • 使用了这个,但 android:popupBackground="#ffffff" 弹出背景是白色的,但没有按照更新的答案显示文本颜色。
    【解决方案3】:

    您只需在&lt;Spinner/&gt; 中添加以下代码即可更改弹出背景。

    android:popupBackground="COLOR_CODE"
    

    现在代码应该如下,

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="100dp"
        android:layout_marginTop="1dp"
        android:layout_height="wrap_content"
        android:background="@drawable/spinner_bg"
        android:layout_marginLeft="1dp"
        android:popupBackground="COLOR_CODE"
    />
    

    【讨论】:

      【解决方案4】:

      在文件夹 res/values/styles.xml 中创建这样的样式

      <style name="spinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
          <item name="android:textColor">Put text color code here</item>
          <item name="android:background">Put background color code here</item>
      </style>  
      

      应用于您的微调器

      <Spinner
          android:id="@+id/spinner"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          style="@style/spinnerItemStyle"/>
      

      【讨论】:

      • 我正在使用自定义微调器,如上代码 spinnerbg.xml 。它不工作
      【解决方案5】:

      自定义微调器需要做一些事情,如下所示:-

      spinner_bg.xml

      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
      <item>
      
      <color android:color="@color/InputBg1" />
      </item>
      <item android:gravity="center_vertical|right" android:right="8dp">
      <layer-list>
      <item android:width="12dp" android:height="12dp"  android:gravity="center" android:bottom="10dp">
          <rotate
              android:fromDegrees="45"
              android:toDegrees="45">
              <shape android:shape="rectangle">
                  <solid android:color="#ffffff" />
                  <stroke android:color="#ffffff" android:width="1dp"/>
              </shape>
          </rotate>
      </item>
      <item android:width="20dp" android:height="10dp" android:bottom="21dp" android:gravity="center">
          <shape android:shape="rectangle">
              <solid android:color="@color/InputBg1"/>
          </shape>
      </item>
      </layer-list>
      </item>
      </layer-list>
      

      spinner_item.xml

      <?xml version="1.0" encoding="utf-8"?>
      <TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="@style/spinnerItemStyle"
          android:maxLines="1"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:textColor="#ffffff"
          android:ellipsize="marquee"
          android:textAlignment="inherit"/>
      

      spinner_dropdown_item.xml

      <?xml version="1.0" encoding="utf-8"?>
      <CheckedTextView 
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="@style/spinnerItemStyle"
          android:maxLines="1"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:textColor="#000000"
          android:ellipsize="marquee"/>
      

      微调器

      <Spinner
      android:id="@+id/spinner"
      android:layout_width="100dp"
      android:popupBackground="#ffffff"
      android:layout_marginBottom="1dp"
      android:layout_height="wrap_content"
      android:textColor="#ffff"
      style="@style/spinnerItemStyle"
      android:background="@drawable/spinner_bg"
      android:layout_marginLeft="1dp" />
      

      style.xml

      <style name="spinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
          <item name="android:textColor">#000000</item>
      </style>
      

      为微调器创建适配器

      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, categories);
      // Drop down layout style - list view with radio button
      dataAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
      

      【讨论】:

        【解决方案6】:

        试试下面的代码

        <?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android" >
            <item
                android:state_pressed="true">
                <shape android:shape="rectangle">
                    <solid android:color="#FFAA00"/>
                </shape>
            </item>
            <item 
                android:state_selected="true">
                <shape android:shape="rectangle">
                    <solid android:color="#FFAA00"/>
                </shape>
            </item>
        </selector>
        

        这是你的微调器

        <Spinner
           android:id="@+id/sp_data"
           android:background="@drawable/mybg"
           android:layout_width="80dp"
           android:layout_height="wrap_content"
           android:textColor="#0000FF"/>
        

        编码愉快..!!

        【讨论】:

          【解决方案7】:

          styles.xml 中添加以下内容以更改下拉菜单的背景颜色和文本颜色。

          <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
                <!-- Spinner style -->
              <item name="android:spinnerStyle">@style/AppTheme.spinnerStyle</item>
              <!-- Spinner dropdown style-->
               <item name="android:spinnerDropDownItemStyle">@style/AppTheme.spinnerDropDownItemStyle</item>
          
          </style>
          <style name="AppTheme.spinnerStyle" parent="@android:style/Widget.Material.Light.Spinner">
              <item name="android:textColor">@android:color/white</item>
              <item name="android:background">@color/colorPrimary</item>
          </style>
          <style name="AppTheme.spinnerDropDownItemStyle" parent="@android:style/Widget.Material.DropDownItem.Spinner">
                  <item name="android:textColor">@android:color/white</item>
                  <item name="android:background">@color/colorPrimary</item>
          </style>
          

          在您的 AndroidManifest.xml 中添加主题。 (查看android:theme的值)

          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:roundIcon="@mipmap/ic_launcher_round"
              android:supportsRtl="true"
              android:theme="@style/AppTheme">
          

          【讨论】:

            【解决方案8】:

            要在整个应用程序中更改 Spinner 项目背景,请添加 styles.xml

            <resources>
                <style name"AppTheme" patent="...">
                    <item name="android:spinnerStyle">@style/Widget.AppTheme.Spinner</item>
                </style>
            
                <style name="Widget.AppTheme.Spinner" parent="Widget.AppCompat.Spinner">
                    <!-- color is change form here -->
                    <item name="android:popupBackground">#FFFFFF</item>
                </style>
            </resources>
            

            【讨论】:

              【解决方案9】:

              要更改下拉列表的背景颜色,请将android:colorBackground 参数添加到您的styles.xml

              中的主题中

              代码:

              <style name="AppTheme" parent="Theme.AppCompat.Light">
                  <item name="android:colorBackground">#ff0000</item>
              </style>
              
              

              因此,保留了整体风格:按下时的效果、圆角等。

              截图:

              【讨论】:

                【解决方案10】:

                您可以将微调器包裹在相对布局中,并在相对布局中添加背景drawable。代码如下。

                <RelativeLayout 
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:background="@drawable/borderbottom_white"<!-- white background with 
                  bottom border -->
                 android:layout_marginTop="15dp"  >
                    <Spinner
                    android:id="@+id/postfield_category"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:textSize="16sp"
                    android:background="@null"
                    android:minHeight="0dp" />
                    <ImageView 
                     android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentRight="true"
                    android:src="@drawable/arrowspinner" />
                </RelativeLayout>
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2013-02-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多