HarmonyOS 鸿蒙Next 自定义按钮

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义按钮

自定义按钮,外部可以控制enabled,如何实现
@Prop enabled 会和系统属性冲突,不定义尝试直接读取enabled也不行

3 回复
参考如下demo:
[@Entry](/user/Entry)
[@Component](/user/Component)
struct CustomButton {
  [@State](/user/State) message: string = 'Hello World';

@Prop enabledBtn:boolean = true

build() { Column() { Button(this.message).enabled(this.enabledBtn) Button(‘切换按钮是否可用’).onClick(() => { this.enabledBtn = !this.enabledBtn }) } .height(‘100%’) .width(‘100%’) } }

写个状态变量的值等于enable的值,[@prop](/user/prop)接收,或者用[@watch](/user/watch)

在HarmonyOS 鸿蒙Next中自定义按钮,你可以通过ArkTS框架实现多种自定义效果。以下是一些关键步骤和示例代码:

  1. 定义按钮组件

    • 使用@Component装饰器定义一个自定义组件。
    • 在组件模板中使用Button元素来创建按钮。
  2. 设置按钮样式

    • 可以通过CSS样式控制按钮的外观,如背景色、边框、圆角等。
    • 使用ButtonOptions对象设置按钮的样式属性,如buttonStyletype等。
  3. 实现按钮交互

    • 利用@State变量来存储按钮的状态(如是否按下)。
    • 使用.onTouch事件监听器来处理触摸事件,更新按钮状态并触发相应的动画或逻辑。
  4. 示例代码

@Component
export struct CustomButton {
    @State isPress: boolean = false;

    build() {
        Button()
            .width('100px')
            .height('50px')
            .backgroundColor(this.isPress ? '#FF0000' : '#0000FF')
            .onTouch((e) => {
                if (e.type == TouchType.Down) {
                    this.isPress = true;
                } else if (e.type == TouchType.Up) {
                    this.isPress = false;
                }
            });
    }
}

这段代码创建了一个简单的自定义按钮,按下时背景色变红,松开时恢复蓝色。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部