鸿蒙selector的使用方式

本文档介绍了在OHOS系统中,如何通过selector.xml来为按钮(Button)设置不同的状态效果,包括点击前后的颜色变化。虽然官方文档未详细说明,但开发者可以通过ComponentState类中的常量理解控件的不同状态,并在XML布局文件中结合selector实现类似安卓的效果。示例代码展示了如何在XML布局中配置selector,并提供了selector.xml的写法作为参考。

在官网文档中,并没有详细说明按钮点击效果如何使用selector的使用方式等。因为系统还需完善,只能自己慢慢摸索了。
控件焦点状态如下,这个是动态jave代码添加组件状态时使用。

package ohos.agp.components;

public class ComponentState {
    public static final int COMPONENT_STATE_CHECKED = 64; //被选中
    public static final int COMPONENT_STATE_DISABLED = 32;//不可用状态
    public static final int COMPONENT_STATE_EMPTY = 0;//初始状态
    public static final int COMPONENT_STATE_FOCUSED = 2;//获取焦点状态
    public static final int COMPONENT_STATE_HOVERED = 268435456;//光标移动到该控件上
    public static final int COMPONENT_STATE_PRESSED = 16384;//点击或触摸状态
    public static final int COMPONENT_STATE_SELECTED = 4;//控件被选择状态

    public ComponentState() {
        throw new RuntimeException("Stub!");
    }

    public static boolean isStateMatched(int stateFlag, int stateMask) {
        throw new RuntimeException("Stub!");
    }
}

以一个button为例。

<Button
            ohos:id="$+id:btn_start_discovery"
            ohos:height="40vp"
            ohos:width="match_content"
            ohos:background_element="$graphic:btn_blue_selector"
            ohos:layout_alignment="center"
            ohos:margin="10vp"
            ohos:padding="10vp"
            ohos:text="start discovery"
            ohos:text_color="#FFFFFF"
            ohos:text_size="20vp"/>

selector.xml写法

<?xml version="1.0" encoding="UTF-8" ?>
<state-container xmlns:ohos="http://schemas.huawei.com/res/ohos"
       ohos:shape="rectangle">
    <item ohos:element="$color:red" ohos:state="component_state_pressed"/>
    <item ohos:element="$color:gray" ohos:state="component_state_empty"/>
</state-container>

点击前ble扫描按钮颜色
点击前点击后颜色
在这里插入图片描述
跟安卓selector效果差不多,也可以将颜色替换为图片或者其他element元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值