平时自定义View,会遇到类似 android:layout_gravity=”left|bottom” 这样的属性。
本文就简单讲讲这种属性怎么在 styles.xml 中定义。
其实,就是 attr 属性不设置类型,然后那里面所有的变量值使用 flag 声明,如下:
<declare-styleable name="XShadow">
<attr name="shadow_side">
<flag name="all" value="0x1111"/>
<flag name="left" value="0x0001"/>
<flag name="top" value="0x0010"/>
<flag name="right" value="0x0100"/>
<flag name="bottom" value="0x1000"/>
</attr>
</declare-styleable>
使用时,获取到 TypeArray 对象,使用 getInteger 方法即可:
1、自定义 View 的代码
TypedArray attr = context.obtainStyledAttributes(attrs, R.styleable.XShadow, 0, 0);
if (attr == null) {
return;
}
try {
int side = attr.getInteger(R.styleable.XShadow_shadow_side, 0x1111);
property.setShadowSide(side);
} finally {
attr.recycle();
}
2、布局中需要设置的代码:
app:shadow_side="left|right|top"