允许在attrs.xml中使用“ wrap_content”之类的值

时间:2019-04-30 15:40:07

标签: android android-xml android-wrap-content declare-styleable attrs.xml

如何在Android的wrap_content资源文件中使用match_parentattrs.xml之类的值?

我的attrs.xml

<declare-styleable name="BarView">
    <attr name="foo_dimen" format="dimension" />
</declare-styleable>

我希望像这样使用foo_dimen属性:

<BarView
    …
    app:foo_dimen="wrap_content" />
<BarView
    …
    app:foo_dimen="42dp" />

1 个答案:

答案 0 :(得分:0)

可以使用<enum />

<declare-styleable name="BarView">
    <attr name="foo_dimen" format="dimension">
        <enum name="wrap_content" value="-1" />
    </attr>
</declare-styleable>

然后您可以使用Java获取值:

TypedArray arr = context.getTheme().obtainStyledAttributes(R.styleable.BarView, /* defStyleAttr */ 0, /* defStyleRes */ 0);
switch ((int)(arr.getDimension(R.styleable.BarView_foo_dimen, -255))) {
    case -1: // wrap_content
        // …
        break;
    case -255: // not specified
        // …
        break;
    default: // Specified valid dimension
        int pixels = arr.getDimensionPixelSize(R.styleable.BarView_foo_dimen, -1);
        …
        break;
}