我希望我的ViewA和ViewB都具有“title”标签。但是我不能把它放在attrs.xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="ViewA">
        <attr name="title" format="string" />
    </declare-styleable>
    <declare-styleable name="ViewB">
        <attr name="title" format="string" />
        <attr name="max" format="integer" />
    </declare-styleable>
</resources>

由于出现错误,已经定义了属性“标题”。 Another question显示此解决方案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="title" format="string" />
    <declare-styleable name="ViewB">
        <attr name="max" format="integer" />
    </declare-styleable>
</resources>

但是在这种情况下,不会生成R.styleable.ViewA_titleR.styleable.ViewB_title。我需要它们来使用以下代码从AttributeSet中读取属性:
TypedArray a=getContext().obtainStyledAttributes( as, R.styleable.ViewA);
String title = a.getString(R.styleable.ViewA_title);

我该如何解决?

最佳答案

您发布的链接确实为您提供了正确的答案。这是它建议您执行的操作:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="title" format="string" />
    <declare-styleable name="ViewA">
        <attr name="title" />
    </declare-styleable>
    <declare-styleable name="ViewB">
        <attr name="title" />
        <attr name="max" format="integer" />
    </declare-styleable>
</resources>

现在,R.styleable.ViewA_titleR.styleable.ViewB_title都可以访问。

如果有机会,请仔细阅读以下答案:Link。相关报价:

10-04 17:11