是否确认我无法在color state list resource中使用主题颜色属性?
我有以下代码非常完美。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffffff" /> <!-- pressed -->
<item android:state_focused="true" android:color="#ffffffff" /> <!-- focused -->
<item android:state_selected="true" android:color="#ffffffff" /> <!-- selected -->
<item android:color="#ff000000" /> <!-- default -->
</selector>
<!-- Use duplicateParentState, so that we can receive click event from parent linear layout -->
<TextView
android:id="@+id/name"
android:gravity="center_vertical"
android:padding="5dp"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="48dp"
android:duplicateParentState="true"
android:textColor="@color/home_menu_text_view_selector"
android:drawablePadding="10dp" />
但是,如果我将代码调整为以下内容,则不再有效。在默认模式下,它不再更改为我想要的颜色。 ?android:attr/textColorPrimary
假设在我的情况下是黑色(#ff000000)。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffffff" /> <!-- pressed -->
<item android:state_focused="true" android:color="#ffffffff" /> <!-- focused -->
<item android:state_selected="true" android:color="#ffffffff" /> <!-- selected -->
<item android:color="?android:attr/textColorPrimary" /> <!-- default -->
</selector>
有人问我一个类似的问题Can a selector resource use a color defined in a style?,但还没有具体的答案。因此,我再次抛出这个球。 :)
答案 0 :(得分:1)
仅供参考,我相信这已在API 23中得到修复。您应该可以 现在声明颜色状态列表中的属性。 - 亚历克斯洛克伍德
不是因为对英语的专业知识减少,而是因为在核心Android上的专业知识较少,我缺乏解释这一点的语言,仍然写下答案,以便在我的脑海中提出这个主题。
Android Attribute (attr)
和Android Color
两者完全不同。仅仅因为 attr还定义了颜色值,您无法将其与单一格式颜色相关联。
attr
用于定义许多关于视图的其他内容,其参考,颜色,尺寸,类型等。即使您不喜欢不传递任何格式,它采用某种格式的默认值来用来应用样式属性。
例如:您可以使用ImageView通过设置为src来显示图像,也可以通过将其设置为背景来获取一个LinearLayout并显示图像。如果您使用Layout而不是ImageView来显示图像,那么您不能接受它来执行自动缩放,例如中心裁剪,fitXY,这是ImageView唯一可能的。
同时写selector
时你可以传递颜色,这可能是六色代码或定义的颜色,但是你不能将attr
设置为color
,因为选择项的 android:color仅接受颜色值,而attr默认情况下还有其他格式类似。
单行答案: attr不是颜色,是的,它有一种格式说颜色,但颜色不是attr包含的唯一格式,因此您不能使用attr而不是颜色。