如何获取xml布局中定义的颜色属性的引用?

时间:2015-07-02 15:13:36

标签: android

更新:在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中定义它可以正常工作..如果第一个缺失它也不会给第二个值...

3 个答案:

答案 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"
/>