更新:在CustomTextView中定义了两个自定义属性。如果两个都在xml中定义,它可以正常工作..如果第一个缺少它也不会给第二个值...
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView, defStyleAttr, 0);
这里someColor是另一种颜色attr,因不同主题而异。 我需要MyCustomView类中的extraColor自定义属性值...
目前获得如下:
<declare-styleable name="CustomTextView">
<attr name="state" format="boolean" />
<attr name="extraColor" format="reference|color" />
</declare-styleable>
a.getColorStateList()在这里不起作用......
CustomTextView定义为:
{{1}}
更新:CustomTextView中定义了2个自定义属性。 如果两者都在xml中定义它可以正常工作..如果第一个缺失它也不会给第二个值...
答案 0 :(得分:1)
你可以尝试那个......
a.getColor(R.styleable.CustomTextView_extraColor, Color.WHITE)
答案 1 :(得分:1)
仅使用参考或颜色
<declare-styleable name="CustomTextView">
<attr name="extraColor" format="reference" />
</declare-styleable>
然后如果它是引用就好了,
a. getColorStateList(R.styleable.CustomTextView_extraColor);
如果是彩色的话,
a. getColor(R.styleable.CustomTextView_extraColor, Color.WHITE);
答案 2 :(得分:0)
除了其他人所说的,看起来命名是不一致的(复制+粘贴错误?):在您发布的大多数代码中,您引用CustomTextView
,但在XML中,您使用MyCustomView
。
尝试更改XML:
<com.mycompany.projectname.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:extraColor="?someColor"
/>