在Java代码中获取自定义属性的值

3

我在attrs.xml文件中创建了一个属性:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Custom">
        <attr name="src" format="integer" />
    </declare-styleable>
</resource>

在我的代码中,我可以这样获取属性的值: attrs.getAttributeIntValue("mynamespace", "src", -1);
这个方法可以正常工作,我可以从layout xml文件中获取'src'的值。 但我的问题是为什么Android不在R类中生成一个值,这样我就不需要在java代码中再次使用字符串“src”了?
1个回答

5

相反,请使用TypedArray

public CustomView(final Context context) {
    this(context, null);
}

public CustomView(final Context context,
            final AttributeSet attrs) {
    this(context, attrs, 0);
}

public CustomView(final Context context,
            final AttributeSet attrs, final int defStyle) {
        super(context, attrs, defStyle);

    final TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.Custom, defStyle, 0);

    int src = a.getInt(R.styleable.Custom_src, 0);

    a.recycle();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接