【学习笔记】HarmonyOS 鸿蒙Next 自定义一个数字输入组件TextInputNumber

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

【学习笔记】HarmonyOS 鸿蒙Next 自定义一个数字输入组件TextInputNumber

预览样式
cke_806.png

@ComponentV2
export default struct TextInputNumber {
@Param value: number = 10
@Event $value: (val: number) => void = (val: number) => {
}
@Event onChange: (val: number) => void = (val: number) => {
}
@Param min: number = 0
@Param max: number = 9999


@Local val: number = 1

// 外部参数变化重新赋值
@Monitor(‘value’)
onValueChange() {
this.val = this.value
}

// 回调给外部
@Monitor(‘val’)
onValChange() {
this.$value(this.val)
this.onChange(this.val)
}

build() {
Row() {
Button() {
Text() {
SymbolSpan($r(‘sys.symbol.minus’))
}
.fontSize(18)
.fontColor(this.val > this.min ? ‘#555’ : ‘#d6d6d6’)
.textAlign(TextAlign.Center)
}
.type(ButtonType.Normal)
.stateEffect(this.val > this.min ? true : false)
.width(36)
.height(36)
.backgroundColor(’#f5f5f5’)
.onClick(() => {
if (this.val > this.min) {
this.val–
} else {
this.val = this.min
}
})
TextInput({ text: ${this.val} })
.type(InputType.Number)
.width(46)
.height(36)
.textAlign(TextAlign.Center)
.padding(0)
.borderRadius(0)
.backgroundColor(’#f5f5f5’)
.onChange((value: string) => {
this.val = Number(value)
})
.onEditChange((isEditing: boolean) => {
if (!isEditing) {
if (this.val < this.min) {
this.val = this.min
} else if (this.val > this.max) {
this.val = this.max
}
}
})
Button() {
Text() {
SymbolSpan($r(‘sys.symbol.plus’))
}
.fontSize(18)
.fontColor(this.val < this.max ? ‘#555’ : ‘#d6d6d6’)
.textAlign(TextAlign.Center)
}
.type(ButtonType.Normal)
.stateEffect(this.val < this.max ? true : false)
.width(36)
.height(36)
.backgroundColor(’#f5f5f5’)
.onClick(() => {
if (this.val > this.max) {
this.val = this.max
} else {
this.val++
}
})
}
.borderRadius(5)
.clip(true)
.backgroundColor(’#f5f5f5’)
.margin({ top: 5 })
}
}

1 回复

作为IT专家,对于HarmonyOS 鸿蒙Next的开发有一定了解。自定义一个数字输入组件TextInputNumber,可以通过对TextInput组件进行配置和扩展来实现。

TextInput组件本身提供了多种输入类型,包括Number纯数字输入模式。因此,自定义TextInputNumber组件时,可以直接设置TextInput的type属性为InputType.Number。

此外,为了增强组件的功能性和用户体验,可以添加一些额外的属性和事件处理函数。例如,可以设置placeholder属性来提供无输入时的提示文本,设置backgroundColor属性来改变输入框的背景颜色。同时,可以绑定onChange事件来获取输入框内改变的内容,以便进行后续的数据处理。

示例代码如下:

@Entry
@Component
struct TextInputNumber {
  build() {
    Column() {
      TextInput({
        placeholder: '请输入数字',
        type: InputType.Number,
        backgroundColor: '#FFFFFF',
        onChange: (value: string) => {
          console.info('输入的数字:', value);
        }
      }).width('100%').margin({top: 20});
    }
  }
}

上述代码创建了一个简单的TextInputNumber组件,它只允许用户输入数字。当输入内容发生变化时,会在控制台输出当前输入的数字。

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

回到顶部