Android 微调器颜色

Android Spinner Color

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

<?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>

使用没有设置 width/height 的简化版本(需要 >= 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> 

但它使高度过大,使整个屏幕看起来不正常。我不知道有什么方法可以改变 pre 23

的高度

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

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

例如。

<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>

在进度条颜色中添加了白色。适用于评分栏。假设也应该适用于进度条。

最后我用了第二种方法,手动设置了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>