我创建了一个带有按钮列表的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);
答案 0 :(得分:2)
选择器应该在res/drawable
。这个
<item name="android:background">@color/selector_favorite_button</item>
应该是
<item name="android:background">@drawable/selector_favorite_button</item>
选择器不是颜色资源。