HarmonyOS 鸿蒙Next 使用TextInput,.type(InputType.NUMBER_DECIMAL)如何输完只保留三位小数,而且大于0

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

HarmonyOS 鸿蒙Next 使用TextInput,.type(InputType.NUMBER_DECIMAL)如何输完只保留三位小数,而且大于0 使用TextInput,.type(InputType.NUMBER_DECIMAL)如何输完只保留三位小数,而且大于0

2 回复

请参考以下代码:

@Entry
@Component
struct TextInputExample {
  @State message: string = '0.3256'
  controller: TextInputController = new TextInputController()
  build() {
    Column() {
      TextInput({placeholder: '请输入内容', text: this.message })
        .width('100%')
          //类型为带小数点的数字输入模式,inputFilter会导致设置输入框类型(即type接口)附带的文本过滤效果失效
        .type(InputType.NUMBER_DECIMAL)
        .maxLength(11)
          //显示定义正则表达式
        .inputFilter('^\\d*\\.?\\d{0,3}$',(e)=>{
          console.log('地区-3',JSON.stringify(e))
        })
        .backgroundColor(Color.Green)
    }
  }
}

更多关于HarmonyOS 鸿蒙Next 使用TextInput,.type(InputType.NUMBER_DECIMAL)如何输完只保留三位小数,而且大于0的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中使用TextInput并设置输入类型为InputType.NUMBER_DECIMAL后,若希望输入值仅保留三位小数且大于0,可以通过监听文本变化并进行格式化处理来实现。具体步骤如下:

  1. 监听文本变化:使用TextInput的文本变化监听器,实时获取用户输入的内容。

  2. 格式化输入值:在监听器中,将输入值转换为BigDecimaldouble类型,然后使用格式化方法保留三位小数。同时,检查值是否大于0。

  3. 设置格式化后的值:将格式化后的值重新设置为TextInput的文本内容。

示例代码(伪代码,具体实现需根据鸿蒙API调整):

textInput.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {}

    @Override
    public void afterTextChanged(Editable s) {
        try {
            double value = Double.parseDouble(s.toString());
            if (value <= 0) {
                textInput.setText("0.001"); // 最小正值
            } else {
                String formatted = String.format("%.3f", value);
                textInput.setText(formatted);
            }
        } catch (NumberFormatException e) {
            // 处理非法输入,如清空或设置为默认值
            textInput.setText("0.000");
        }
    }
});

注意:上述代码为逻辑示意,实际开发中需考虑异常处理、性能优化等问题。

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

回到顶部