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

本文介绍如何在自定义View中实现类似android:layout_gravity的属性。通过在styles.xml中定义attr属性,并使用flag声明变量值,然后在代码中通过TypeArray获取并使用这些值。

平时自定义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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值