InflateException:禁用按钮的选择器

时间:2016-04-08 05:44:38

标签: android android-layout

我创建了一个带有按钮列表的gui。

其中一些按钮可能被禁用,应该以不同的颜色显示,这就是我添加此选择器(color/selector_fav_button.xml)的原因:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="@color/button_favorite_disabled" />
    <item android:color="@color/button_default"/>
</selector>

我在样式属性(values / styles.xml)中引用了这个选择器:

<style name="favButtonStyle">
        <item name="android:textColor">@color/primary_text</item>
        <item name="android:textSize">@dimen/textView_default_textsize_small</item>
        <item name="android:background">@color/selector_favorite_button</item><!--Adding this line causes a crash-->
</style>

我的按钮中引用了该样式:

<Button
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="@dimen/fav_button_item_height"
    android:text="@{favBtn.displayText}"
    android:enabled="@{favBtn.isEnabled}"
    style="@style/favButtonStyle"
/>

分配像@ color / any_color_but_not_a_selector这样的颜色可以正常工作。如果我在引用任何选择器的行周围放置注释,那么一切都会再次起作用(除了颜色;))。

如果我在没有评论的情况下运行我的应用程序,它会崩溃并留下android.view.InflateException:二进制XML文件行#8:错误导致类Button

修改 这里发生错误:

ListitemFavBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.listitem_favBtn, parent, false);

1 个答案:

答案 0 :(得分:2)

选择器应该在res/drawable。这个

 <item name="android:background">@color/selector_favorite_button</item>

应该是

<item name="android:background">@drawable/selector_favorite_button</item>

选择器不是颜色资源。