扩展鸿蒙textinput组件

news2024/12/24 3:49:40

扩展鸿蒙textinput组件,支持快速扩展展性,标题文本等,文本内容双向绑定、文本组件快速复用。

组件代码

/**
 * 单选文本
 */
@Component
export default  struct DiygwInput{
  //绑定的值
  @Link value:string;
  //未选中图标
  @State labelImg: Resource = $r('app.media.user');
  //是否文本图片
  @State isLabelImg: boolean = false;
  @State labelImgWidth: number = 20;
  @State labelImgHeight: number = 20;
  //标题文本
  @State label:string = '文本';
  //水平状态时,文本占大小
  @State labelWidth:number = 80;
  //是否标题文本换行
  @State isWrapLabel:boolean = false;
  //是否标题文本
  @State isLabel:boolean = true;
  //标题颜色
  @State labelColor:string = "#333333";
  //自动标题长度
  @State isLabelAuto:boolean = false;
  //文本字体大小
  @State textSize:number = 14;
  //选中图版本大小
  @State imgSize:number = 28;
  //每个占比
  @State itemWidth:string = '33%';
  //组件内边距
  @State leftRightPadding:number = 16;
  @State topBottomPadding:number = 6;

  @State placeHolder:string = '请输入'

  @State placeHolderColor:string = '#fff'

  @State inputRadius:number = 2;
  @State textHeight:number = 30
  @State isBorder:boolean = true;
  @State inputType:InputType = InputType.Normal


  build() {
    Flex({
      alignItems:this.isWrapLabel?ItemAlign.Start:ItemAlign.Center,
      direction:this.isWrapLabel?FlexDirection.Column:FlexDirection.Row,
      justifyContent:FlexAlign.Start
    }){
      if(this.isLabel){
        Row(){
          if(this.isLabelImg){
            Image(this.labelImg)
              .width(this.labelImgWidth)
              .height(this.labelImgHeight)
              .margin({ left:3 }).flexShrink(0)
          }
          if(this.isLabelAuto){
            Text(this.label).flexShrink(0).fontColor(this.labelColor).fontSize(this.textSize).margin({
              bottom:this.isWrapLabel?10:0,
              right:10,
            }).textAlign(TextAlign.Start);
          }else{
            Text(this.label).fontColor(this.labelColor).width(this.isWrapLabel?'100%':this.labelWidth).fontSize(this.textSize).margin({
              bottom:this.isWrapLabel?10:0
            }).textAlign(TextAlign.Start);
          }
        }.margin({
          top:this.isWrapLabel?10:0
        })
      }

      TextInput({ placeholder: this.placeHolder,text:this.value })
        .fontSize(this.textSize)
        .type(this.inputType)
        .borderRadius(this.inputRadius)
        .padding({ left:this.isWrapLabel?3:10 })
        .placeholderColor(this.placeHolderColor)
        .backgroundColor(Color.White)
        .fontWeight(FontWeight.Normal)
        .fontStyle(FontStyle.Normal)
        .fontColor(Color.Black).height(this.textSize+15).width('100%') .onChange((value: string) => {
          this.value = value;
        })
    }.borderWidth({
      bottom: this.isBorder?1:0
    }).borderColor({
      bottom: "#eee"
    }).borderStyle(BorderStyle.Solid).borderStyle(BorderStyle.Solid).height(this.textSize+(this.isWrapLabel?20:0)+30+this.topBottomPadding*2).padding({left:this.leftRightPadding,right:this.leftRightPadding,top:this.topBottomPadding,bottom:this.topBottomPadding})
    // .onAppear(() => {
    //   this.initCheck()
    // })
  }
}

快速实现输入组件调用代码

import {
    navigateTo
} from '../common/Page'
import {
    IDynamicObject
} from '../component/IType';
import DiygwInput from '../component/Input'
@Entry
@Component
export struct Form {
    @State input: string = '';
    @State input1: string = '';
    @State input2: string = '';

    async onPageShow() {}

    async aboutToAppear() {
        await this.onPageShow()
    }

    build() {
        Row() {
            Navigation() {
                    Column() {
                        Scroll() {
                            Column() {
                                DiygwInput({
                                        label: '标题',
                                        placeHolder: '请输入标题',
                                        value: $input
                                    })
                                    .width('100%')
                                DiygwInput({
                                        label: '标题',
                                        placeHolder: '请输入密码',
                                        inputType: InputType.Password,
                                        value: $input1
                                    })
                                    .width('100%')
                                DiygwInput({
                                        label: '标题',
                                        placeHolder: '请输入电话',
                                        inputType: InputType.PhoneNumber,
                                        value: $input2
                                    })
                                    .width('100%')
                            }.alignItems(HorizontalAlign.Start)
                        }
                    }.height('100%').alignItems(HorizontalAlign.Start).backgroundColor('#fff')

                }
                .width('100%')
                .height('100%')
                .backgroundColor('#07c160')
                .title(this.NavigationTitle())
                .titleMode(NavigationTitleMode.Mini)
                .align(Alignment.Center)
                .hideBackButton(true)
        }.width('100%').height('100%')
    }

    @Builder
    NavigationTitle() {
        Column() {
            Text('表单')
                .width('100%')
                .textAlign(TextAlign.Center)
                .height('28vp')
                .fontSize('20fp')
                .fontWeight(500)
                .fontColor('#fff')
        }
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1434754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《热辣滚烫》预售狂潮来袭,贾玲、马丽、杨紫三大女神联袂出演。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 《热辣滚烫》预售票房一日破1300万,燃爆春节档&am…

自定义Dockerfile构建运行springboot

自定义Dockerfile构建运行springboot 通过dockerfile生成自定义nginx镜像 !!!docker 必须在linux环境下才能进行如果你是window则需要装虚拟机 新建一个文件名字为Dockerfile,无需后缀 文件完整名就是Dockerfile,也可以自定义d…

有向图的拓扑排序-BFS求解

题目 给定一个n个点m条边的有向图,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。 若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称…

linux中的makefile

(码字不易,关注一下吧w~~w) makefile文件是用来管理项目文件,通过执行make命令,make就会解析并执行makefile文件。 命名:makefile或者Makefile 规则: 目标文件:依赖文件 (tab)命…

Narrative Visualization: Telling Stories with Data

作者:Edward Segel、Jeffrey Heer 发表:TVCG, 机构:UW Interactive Data Lab 【原斯坦福可视化组】 1.概述 静态可视化:在一大串的文本描述中,可视化作为提供证据和细节的图表出现新兴可视化&#xff1a…

设计模式学习笔记(一):基本概念;UML

文章目录 参考面向对象的设计原则创建型模式结构型模式行为型模式 UML视图图(Diagram)模型元素(Model Element)通用机制类之间的关系关联关系复杂!!聚合关系组合关系 依赖关系泛化关系接口与实现关系 参考 https://github.com/fa…

ubuntu开机报错/dev/nume0n1p2:clean

本来是开机卡在这个界面,经过以下操作,变成这种了 现在的问题变成linux卡在 failed to start NVIDIA Persistence Daemon 按照下面的操作方法,可以有开机界面了。但是输入密码后,一直在登录界面 1.方式一:重新安装显…

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现OOA-CNN-LSTM-Attention鱼鹰算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制&…

Python爬虫实战 | 京东平台电商API接口采集京东商品京东工业商品详情数据

item_get-获得JD商品详情API测试 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cac…

C++多线程学习[六]: 多线程之间的同步

一、同步问题 实际开发场景中有很多需要同步的情况,例如,音频和视频的同步输出、或者通讯能够第一时间同步接受处理… 二、多线程同步demo 可以看到cond可以阻塞等待(wait)可以通知一个线程(notify_one)也可以通知所有的线程&am…

SQL Server数据库日志查看若已满需要清理的三种解决方案

首先查看获取实例中每个数据库日志文件大小及使用情况,根据数据库日志占用百分比来清理 DBCC SQLPERF(LOGSPACE) 第一种解决方案: 在数据库上点击右键 → 选择 属性 → 选择 文件,然后增加数据库日志文件的文件大小。 第二种解决方案 手动…

如何使用VS Code编写小游戏并实现公网游玩本地游戏【内网穿透】

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程,我们将通过VS Code实现远程开发MENJA小游戏,并通过cpolar内网穿透发布到公网,分…

细说开源软件的影响力分析

开源软件的影响力分析 一、开源软件如何推动技术创新 开源软件以其开放源代码的特性,极大地推动了全球软件技术的创新和发展。这种开放性不仅使得开发者能够自由地查看、修改和使用源代码,还促进了全球开发者之间的深度协作和交流。 1.1 促进全球协作&…

C/C++内存管理的底层调用逻辑

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…

追觅发布多款旗舰新品,双机械臂扫地机器人X40领衔登场

2月2日,追觅科技全球首创仿生“双”机械臂新品发布会在苏州举行。会上,追觅科技中国区总裁郭人杰分享了追觅科技全球化发展的业绩成果。郭人杰称,2019-2023年,追觅科技5年复合年增长率超过100%,增速领跑智能清洁行业&a…

【leetcode题解C++】450.删除二叉搜索树中的节点 and 669.修剪二叉搜索树 and 108.将有序数组转换为二叉搜索树

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可…

超多制作模板的姓氏头像生成器微信小程序源码

超多制作模板的姓氏头像生成器微信小程序源码,这是一款姓氏头像制作小工具,内含丰富多样的模板提供制作。 以前的基本是固定位置生成,这款制作支持拖拽调整位置,自定义颜色,阴影等等。

2022年9月电子学会青少年软件编程 中小学生Python编程等级考试二级真题解析(判断题)

2022年9月Python编程等级考试二级真题解析 判断题(共10题,每题2分,共20分) 26、字典中的键是唯一的,不能重复。而值对应于键,值是可以重复的。 答案:对 考点分析:考查字典相关知识,字典中的键是唯一的,不允许出现重复;字典的值可以是任意类型的对象,可以是数字、…

(学习日记)2024.02.01:引用变量 / 默认实参 / 一元作用域运算符 / 函数重载

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

Chakra UI:构建 Web 设计的未来

Chakra UI:构建 Web 设计的未来 在当今的Web开发领域,构建现代、可访问的用户界面是一个重要的任务。为了满足这一需求,开发者需要一个强大而易用的UI组件库。而Chakra UI作为一个基于React的开源组件库,正是为了解决这个问题而诞…