当前位置: 首页 > 工具软件 > Gravity View > 使用案例 >

自定义 View 添加类似 android:layout_gravity 属性

笪俊迈
2023-12-01

平时自定义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"
 类似资料: