如何在 Android 上的资源文件中允许使用 wrap_content
或 match_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" />
可以使用
<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;
}