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>
我正在尝试将微调器的背景色设为白色。这是我想对微调器进行的唯一更改,但我看到的每个解决方案都需要制作自定义微调器、更改样式或其他一些冗长且过于复杂的过程来更改颜色。有没有办法轻松改变颜色。我喜欢创建可绘制对象并将其设置为背景的方法。我在下面找到的解决方案适用于 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>