在android中更改微调器的主题

时间:2017-07-14 08:17:51

标签: android xml android-spinner layout-inflater

我的布局中有一个微调器,并希望在棒棒糖前后的API级别中自定义其样式。

我在style-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中运行程序时,它会返回错误:

Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class <unknown>

但是,它可以在android其他API级别中正常工作。 有人帮我吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

一切都是正确的。问题应该在你的src属性中。我使用了android drawable文件android:src="@drawable/ic_close_light"并且工作正常。

答案 1 :(得分:0)

在xml ...

中的Spinner标签中添加此行
style="@style/SpinnerTheme"

答案 2 :(得分:0)

试试这个:

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

在drawable文件夹spinner_background.xml中创建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>