在 android 中更改微调器的主题
Changing theme of spinner in android
我的布局中有一个微调器,想在 API 关卡前和 post-Lollipop 中自定义其样式。
我使用了以下样式作为样式-v23.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpinnerTheme" parent="AppTheme">
<item name="android:background">@drawable/bg_spinner</item>
</style>
</resources>
这是 bg_spinner 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape>
<gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
<stroke android:width="0.33dp" android:color="#0fb1fa" />
<corners android:radius="0dp" />
<padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
</shape>
</item>
<item android:right="5dp">
<bitmap android:gravity="center_vertical|right" android:src="@drawable/ic_chevron_down" />
</item>
</layer-list>
</item>
</selector>
但是当我运行程序在API级别23时,它returns出现以下错误:
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class <unknown>
但是,它在 android 其他 API 关卡中按预期正常工作。
有人可以帮助我吗?
提前致谢
在 xml 中的 Spinner 标记中添加此行...
style="@style/SpinnerTheme"
试试这个:
将此微调器添加到您的 styles.xml 文件中
<style name="spinnerStyle" parent="Base.Widget.AppCompat.Spinner">
<item name="android:background">@drawable/spinner_background</item>
</style>
将此行放在您的应用程序主题中
<item name="android:spinnerStyle">@style/spinnerStyle</item>
在可绘制文件夹中创建 xml 文件 spinner_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<corners android:radius="5dp" />
<stroke
android:width="1dp"
android:color="your color"
/>
</shape>
</item>
<item>
<bitmap
android:gravity="center_vertical|right"
android:src="your dropdown image"/>
</item>
</layer-list>
</item>
</selector>
一切正确。问题应该在您的 src 属性中。我使用了 android 可绘制文件 android:src="@drawable/ic_close_light"
并且工作正常。
我的布局中有一个微调器,想在 API 关卡前和 post-Lollipop 中自定义其样式。
我使用了以下样式作为样式-v23.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpinnerTheme" parent="AppTheme">
<item name="android:background">@drawable/bg_spinner</item>
</style>
</resources>
这是 bg_spinner 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape>
<gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
<stroke android:width="0.33dp" android:color="#0fb1fa" />
<corners android:radius="0dp" />
<padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
</shape>
</item>
<item android:right="5dp">
<bitmap android:gravity="center_vertical|right" android:src="@drawable/ic_chevron_down" />
</item>
</layer-list>
</item>
</selector>
但是当我运行程序在API级别23时,它returns出现以下错误:
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class <unknown>
但是,它在 android 其他 API 关卡中按预期正常工作。 有人可以帮助我吗?
提前致谢
在 xml 中的 Spinner 标记中添加此行...
style="@style/SpinnerTheme"
试试这个:
将此微调器添加到您的 styles.xml 文件中
<style name="spinnerStyle" parent="Base.Widget.AppCompat.Spinner">
<item name="android:background">@drawable/spinner_background</item>
</style>
将此行放在您的应用程序主题中
<item name="android:spinnerStyle">@style/spinnerStyle</item>
在可绘制文件夹中创建 xml 文件 spinner_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<corners android:radius="5dp" />
<stroke
android:width="1dp"
android:color="your color"
/>
</shape>
</item>
<item>
<bitmap
android:gravity="center_vertical|right"
android:src="your dropdown image"/>
</item>
</layer-list>
</item>
</selector>
一切正确。问题应该在您的 src 属性中。我使用了 android 可绘制文件 android:src="@drawable/ic_close_light"
并且工作正常。