Android Spinner Color

时间:2017-03-07 16:12:28

标签: android android-spinner android-drawable

我试图让我的微调器的背景颜色变白。这是我想要对微调器进行的唯一更改,但我看到的每个解决方案要么需要制作自定义微调器,更改样式,要么只需更改其他一些长而过于复杂的过程来改变颜色。有没有办法轻松改变颜色。我很喜欢创建drawable并将其设置为背景的方法。我在下面找到的解决方案适用于api> = 23但是我需要一个最小值为19的东西。有一个简单的方法还是我必须创建一个自定义微调器来改变颜色?这就是我想让它看起来像。

Using drawable listed below for >= 23 api

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <color android:color="@color/splashColor" />
        </item>

        <item android:gravity="center_vertical|right" android:right="8dp">
            <layer-list>
                <item android:width="12dp" android:height="12dp" android:gravity="center" android:bottom="11dp">
                    <rotate android:fromDegrees="45">
                        <shape android:shape="rectangle">
                            <solid android:color="#000000" />
                            <stroke android:color="#aaaaaa" android:width="1dp"/>
                        </shape>
                    </rotate>
                </item>

                <item android:width="30dp" android:height="10dp" android:bottom="21dp" android:gravity="center">
                    <shape android:shape="rectangle">
                        <solid android:color="@color/splashColor"/>
                    </shape>
                </item>
            </layer-list>
        </item>
    </layer-list>

使用不设置宽度/高度的简化版本(需要&gt; = 23)如下所示

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="@android:color/white" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="end"
            android:src="@drawable/arrow_dropdown" />
    </item>
</layer-list> 

但它会使高度太大,使整个屏幕显得偏离。我不知道改变高度前23的方法

2 个答案:

答案 0 :(得分:1)

您可以为其设置主题属性。

使用自定义命名空间并进行设置。

实施例。

<ProgressBar
....
 app:theme="@style/custom_style"
/>

其中custom_style在样式目录中定义为:

 <style name="custom_style" parent="Theme.AppCompat">
        <item name="colorControlNormal"><!--this color is not of importance --></item>
        <item name="colorControlActivated">#FFFFFF</item>
    </style>

将白色添加到进度条颜色。适用于评级栏。假设也应该为progressbars工作。

答案 1 :(得分:0)

最后我使用了第二种方法,只需手动设置微调器的高度。这是spinner代码最终的样子。

<Spinner
      android:layout_width="match_parent"
      android:layout_height="35dp"
      android:background="@drawable/custom_spinner"
      android:id="@+id/type" />

custom_spinner

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="@android:color/white" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="end"
            android:src="@drawable/arrow_dropdown" />
    </item>
</layer-list>