【问题标题】:Changing theme of spinner in android在android中更改微调器的主题
【发布时间】:2017-07-14 08:17:51
【问题描述】:

我的布局中有一个微调器,并希望在棒棒糖前后的 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 级别中按预期正常工作。 有没有人可以帮助我?

提前致谢

【问题讨论】:

  • 你在哪里引用SpinnerTheme风格,请贴代码?
  • 就是上面的第一个代码!
  • 一切都是正确的。问题必须在您的 src 属性中。我使用了 android 可绘制文件 android:src="@drawable/ic_close_light" 并且工作正常。更改 src 可绘制对象并再次运行。
  • 没错。发布为答案,以便我接受。但是这个xml文件有什么问题呢?
  • @Mahdia 作为答案发布。你必须为src而不是xml drawable使用图像drawable

标签: android xml android-spinner layout-inflater


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在 xml 中的 Spinner 标签中添加这一行...

    style="@style/SpinnerTheme"
    

    【讨论】:

    • 我已经这样做了,因为这条线我得到了错误。如果我删除此行,则样式没有变化,也没有错误。
    • parent="android:style/Widget.ListView.DropDown" 用你的风格写下这一行来代替 parent="AppTheme"
    • 谢谢,但同样的错误。我认为问题出在 bg_spinner 文件中。
    【解决方案3】:

    试试这个:

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

    在可绘制文件夹 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多