-1

如何允许在 Android 上使用类似wrap_contentmatch_parent在资源文件中的值?attrs.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" />
4

1 回答 1

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;
}
于 2019-04-30T15:52:25.183 回答