鸿蒙PC UI控件库 - PasswordInput 密码输入框详解

视频地址:

https://www.bilibili.com/video/BV1jomdBBE4H/

📋 目录

  • 概述
  • 特性
  • 快速开始
  • API 参考
  • 使用示例
  • 主题配置
  • 最佳实践
  • 常见问题
  • 总结

概述

PasswordInput是控件库中专用于密码输入的组件,基于TextInput扩展而来,支持显示/隐藏密码切换、密码强度显示、验证等功能,适用于登录、注册、密码修改等场景。

设计理念

密码输入框采用安全易用设计,具有以下特点:

  1. 安全优先:默认隐藏密码,支持一键切换显示/隐藏
  2. 强度提示:实时显示密码强度,帮助用户创建安全密码
  3. 功能完整:支持验证、提示、多种尺寸和状态
  4. 品牌标识:左下角自动包含品牌标识(圆圈红字"PC")
  5. 主题统一:所有样式配置都在代码中,方便定制

适用场景

  • 用户登录:登录页面的密码输入
  • 用户注册:注册页面的密码设置
  • 密码修改:修改密码功能
  • 安全验证:需要密码确认的场景

特性

✨ 核心特性

  • 显示/隐藏切换:支持一键切换密码显示/隐藏状态
  • 密码强度显示:实时计算并显示密码强度(弱/中/强)
  • 强度指示条:可视化显示密码强度等级
  • 标签和提示:支持标签、提示文本、错误提示
  • 多种尺寸:支持 small、medium、large 三种尺寸
  • 状态管理:支持禁用、只读、必填等状态
  • 长度限制:支持最大长度限制
  • 品牌标识:自动包含左下角品牌标识
  • 主题配置:所有样式都可通过代码配置

🎨 视觉特点

  • 正常状态:白色背景 + 灰色边框
  • 错误状态:红色边框 + 红色错误提示
  • 禁用状态:灰色背景 + 灰色文字 + 灰色边框
  • 只读状态:正常样式但不可编辑
  • 强度指示:弱(红)、中(橙)、强(绿)三种颜色

快速开始

基础用法

import{PasswordInput}from'../components/base'@Entry @Component struct MyPage{@State password:string=''build(){Column({space:20}){// 基础密码输入框PasswordInput({value:$password,placeholder:'请输入密码'})// 带标签的密码输入框PasswordInput({value:$password,placeholder:'请输入密码',label:'密码'})// 带密码强度的密码输入框PasswordInput({value:$password,placeholder:'请输入密码',label:'密码',showStrength:true})}.width('100%').height('100%').padding(20).justifyContent(FlexAlign.Center)}}

关于双向绑定

PasswordInput使用@Link实现双向绑定,需要使用$variableName语法:

@State password:string=''PasswordInput({value:$password// 使用 $ 创建双向绑定})

API 参考

Props

属性名类型默认值说明
value@Link string-密码值(必需,双向绑定)
placeholderstring'请输入密码'占位符文本
labelstring?undefined标签文本(可选)
hintstring?undefined提示文本(可选,显示在输入框下方)
errorMessagestring?undefined错误提示文本(可选,优先级高于 hint)
inputSize'small' | 'medium' | 'large''medium'输入框尺寸
disabledbooleanfalse是否禁用
readonlybooleanfalse是否只读
requiredbooleanfalse是否必填
maxLengthnumber?undefined最大长度
showStrengthbooleanfalse是否显示密码强度
showToggleButtonbooleantrue是否显示显示/隐藏切换按钮
showBrandbooleantrue是否显示品牌标识
inputWidthstring | number?undefined输入框宽度

PasswordStrength 枚举

说明
None无(空密码)
Weak
Medium
Strong

尺寸规格

尺寸高度字体大小图标大小内边距(左右)
small48vp14vp18vp12vp
medium60vp16vp20vp14vp
large72vp18vp24vp16vp

使用示例

1. 基础密码输入框

@Entry @Component struct PasswordExample1{@State password:string=''build(){Column({space:15}){PasswordInput({value:$password,placeholder:'请输入密码'})Text(`密码长度:${this.password.length}`).fontSize(14).fontColor('#666')}.width('100%').padding(20)}}

2. 带标签和提示

@Entry @Component struct PasswordExample2{@State password:string=''build(){Column({space:15}){PasswordInput({value:$password,placeholder:'请输入密码',label:'密码',hint:'密码长度为8-20个字符'})PasswordInput({value:$password,placeholder:'请确认密码',label:'确认密码',errorMessage:'两次输入的密码不一致'})}.width('100%').padding(20)}}

3. 密码强度显示

@Entry @Component struct PasswordExample3{@State password:string=''build(){Column({space:15}){PasswordInput({value:$password,placeholder:'请输入密码',label:'密码',showStrength:true,hint:'密码应包含大小写字母、数字和特殊字符'})}.width('100%').padding(20)}}

4. 不同尺寸

@Entry @Component struct PasswordExample4{@State password1:string=''@State password2:string=''@State password3:string=''build(){Column({space:15}){PasswordInput({value:$password1,placeholder:'小尺寸',inputSize:'small'})PasswordInput({value:$password2,placeholder:'中等尺寸(默认)',inputSize:'medium'})PasswordInput({value:$password3,placeholder:'大尺寸',inputSize:'large'})}.width('100%').padding(20)}}

5. 必填和状态

@Entry @Component struct PasswordExample5{@State password1:string=''@State password2:string='已设置密码'@State password3:string='只读密码'build(){Column({space:15}){PasswordInput({value:$password1,placeholder:'请输入密码',label:'密码',required:true})PasswordInput({value:$password2,placeholder:'请输入密码',label:'禁用状态',disabled:true})PasswordInput({value:$password3,placeholder:'请输入密码',label:'只读状态',readonly:true})}.width('100%').padding(20)}}

6. 隐藏切换按钮

@Entry @Component struct PasswordExample6{@State password:string=''build(){Column({space:15}){PasswordInput({value:$password,placeholder:'显示切换按钮(默认)',label:'密码',showToggleButton:true})PasswordInput({value:$password,placeholder:'隐藏切换按钮',label:'密码',showToggleButton:false})}.width('100%').padding(20)}}

7. 最大长度限制

@Entry @Component struct PasswordExample7{@State password:string=''build(){Column({space:15}){PasswordInput({value:$password,placeholder:'最多输入20个字符',label:'密码',maxLength:20,hint:`已输入${this.password.length}/20 个字符`})}.width('100%').padding(20)}}

8. 登录表单示例

@Entry @Component struct LoginForm{@State username:string=''@State password:string=''build(){Column({space:20}){Text('用户登录').fontSize(24).fontWeight(FontWeight.Bold)TextInput({value:$username,placeholder:'请输入用户名',label:'用户名',required:true})PasswordInput({value:$password,placeholder:'请输入密码',label:'密码',required:true})Button('登录').width('100%').height(44).onClick(()=>{// 处理登录逻辑})}.width('100%').padding(30)}}

9. 注册表单示例

@Entry @Component struct RegisterForm{@State username:string=''@State password:string=''@State confirmPassword:string=''build(){Column({space:20}){Text('用户注册').fontSize(24).fontWeight(FontWeight.Bold)TextInput({value:$username,placeholder:'请输入用户名',label:'用户名',required:true})PasswordInput({value:$password,placeholder:'请输入密码',label:'密码',required:true,showStrength:true,hint:'密码应包含大小写字母、数字和特殊字符'})PasswordInput({value:$confirmPassword,placeholder:'请确认密码',label:'确认密码',required:true,errorMessage:this.password!==this.confirmPassword&&this.confirmPassword?'两次输入的密码不一致':''})Button('注册').width('100%').height(44).onClick(()=>{// 处理注册逻辑})}.width('100%').padding(30)}}

主题配置

PasswordInput 的所有样式都通过ComponentTheme配置,所有配置都在代码中,不依赖JSON文件。

修改默认颜色

import{ComponentTheme}from'../theme/ComponentTheme'// 修改主色(影响聚焦状态的边框颜色)ComponentTheme.PRIMARY_COLOR='#007AFF'// 修改错误色(影响错误状态的边框和提示颜色)ComponentTheme.ERROR_COLOR='#FF3B30'// 修改边框颜色ComponentTheme.BORDER_COLOR='#E5E5E5'// 修改圆角ComponentTheme.BORDER_RADIUS=8

批量配置

import{ComponentTheme}from'../theme/ComponentTheme'// 使用 setTheme 方法批量配置ComponentTheme.setTheme({primaryColor:'#007AFF',errorColor:'#FF3B30',borderRadius:8,spacing:16})

最佳实践

1. 尺寸选择

推荐:根据使用场景选择尺寸

  • small:用于紧凑空间、表格内输入
  • medium:默认尺寸,适用于大多数场景
  • large:用于重要输入或大屏幕显示

2. 密码强度显示

  • 注册场景:建议开启showStrength,帮助用户创建安全密码
  • 登录场景:可以关闭showStrength,简化界面
  • 密码修改:建议开启showStrength,确保新密码安全

3. 显示/隐藏切换

  • 默认开启showToggleButton: true,方便用户确认输入
  • 安全场景:可以关闭切换按钮,提高安全性
  • 公共环境:建议关闭切换按钮,防止密码泄露

4. 验证规则

  • 长度验证:使用maxLength限制最大长度
  • 格式验证:通过errorMessage显示验证错误
  • 强度验证:结合showStrength提示用户密码强度

5. 用户体验

  • 实时反馈:密码强度实时更新,给用户即时反馈
  • 清晰提示:使用hint提供密码要求说明
  • 错误提示:使用errorMessage显示明确的错误信息

常见问题

Q1: 如何自定义密码强度计算规则?

A: 当前密码强度计算规则是内置的,基于以下因素:

  • 密码长度(≥8个字符)
  • 包含小写字母
  • 包含大写字母
  • 包含数字
  • 包含特殊字符

如果需要自定义规则,可以在外部监听value变化,自行计算强度并显示。

Q2: 如何禁用显示/隐藏切换功能?

A: 设置showToggleButton: false

PasswordInput({value:$password,showToggleButton:false})

Q3: 如何隐藏密码强度显示?

A: 设置showStrength: false(默认值):

PasswordInput({value:$password,showStrength:false})

Q4: 密码强度如何计算?

A: 密码强度根据以下规则计算:

  • :满足1-2个条件
  • :满足3-4个条件
  • :满足5个条件

条件包括:长度≥8、小写字母、大写字母、数字、特殊字符。

Q5: 如何设置输入框宽度?

A: 使用inputWidth属性:

PasswordInput({value:$password,inputWidth:300// 固定宽度})PasswordInput({value:$password,inputWidth:'100%'// 百分比宽度})

Q6: 如何实现密码确认验证?

A: 通过监听两个密码输入框的值进行比较:

@State password:string=''@State confirmPassword:string=''PasswordInput({value:$password,label:'密码'})PasswordInput({value:$confirmPassword,label:'确认密码',errorMessage:this.password!==this.confirmPassword&&this.confirmPassword?'两次输入的密码不一致':''})

总结

PasswordInput 是控件库中专用于密码输入的组件,具有以下核心特性:

  1. 安全优先:默认隐藏密码,支持一键切换显示/隐藏
  2. 强度提示:实时显示密码强度,帮助用户创建安全密码
  3. 功能完整:支持验证、提示、多种尺寸和状态
  4. 易于使用:简单的 API,开箱即用
  5. 主题配置:所有样式都可通过代码配置
  6. 品牌标识:自动包含品牌标识,保持视觉统一

关键要点

  • ✅ 使用$variableName创建双向绑定
  • ✅ 使用showStrength显示密码强度
  • ✅ 使用showToggleButton控制显示/隐藏按钮
  • ✅ 使用label属性添加标签
  • ✅ 使用hinterrorMessage显示提示
  • ✅ 使用inputSize属性选择合适尺寸
  • ✅ 通过ComponentTheme自定义全局样式

适用场景

  • 用户登录
  • 用户注册
  • 密码修改
  • 安全验证

下一篇预告:NumberInput(数字输入框)详解


本文档属于《鸿蒙PC UI控件库开发系列文章》第8篇

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年河南管城区代理记账公司权威推荐榜单:新密代理记账‌/郑东新区代理记账‌/巩义代理记账‌源头公司精选

随着河南省营商环境的持续优化与数字经济的高速发展,企业财税服务市场正经历深刻的智能化与规范化变革。行业数据显示,河南省中小企业对代理记账服务的需求近年来保持稳定增长。在这一背景下,选择一家具备专业资质、…

IDEA(2020版)sevlet+session实现购物车功能

IDEA(2020版)sevlet+session实现购物车功能查看全文:IDEA(2020版)sevlet+session实现购物车功能 – 每天进步一点点 【任务目标】 通过所学Session知识以及购物车的访问流程,以购买蛋糕为例,模拟实现购物车功能。 …

​降血脂降血压产品前十推荐,长期深受三高问题困扰遇新发现!个人真实分享

如果你身边也有人在为血压忽高忽低发愁、为体检报告上的胆固醇红字叹气、或是每天爬楼都会心慌气短,那么你一定能理解—— 心脑血管的事,从来不是“小事”。过去一年,我把注意力放在了十款热度极高的营养补充剂上,…

2025年储罐订做厂家权威推荐榜:贮罐厂商/化工储罐/不锈钢储罐源头厂家精选

在现代化工、能源、供热及众多工业生产流程中,储罐作为核心的存储与缓冲设备,其设计与制造质量直接关系到生产安全、物料品质、能源效率和环境合规。无论是储存腐蚀性化学品、高温导热油,还是作为采暖系统的关键部件…

element-ui的table跨行合并

效果图代码<template><el-container class="car-head"><el-header height="auto"><el-form :inline="true":model="formObj"@submit.native.preventlab…

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选!

2025 年 12 月红木家具/东方红木家居权威推荐榜:传承经典,匠心独运的品质之选! 随着人们对生活品质追求的不断提升,红木家具因其独特的文化内涵和精湛的工艺,越来越受到消费者的青睐。为了帮助筛选红木家居/红木家…

2025年佛山床垫品牌源头厂家精选推荐

在选择合适的硬底护脊床垫时,了解不同品牌和厂家提供的服务至关重要。本篇文章深入探讨了佛山地区多个知名床垫品牌,包括大森林电子商务有限公司和冬熊家居等。这些厂家不仅注重产品的质量,还提供灵活的定制服务,以…

2025年LED灯供应商综合推荐榜单:万圣节南瓜灯/酒吧氛围灯/酒吧装饰灯源头厂家精选

随着固态照明技术的成熟与普及,LED照明已成为全球主流照明方案。根据行业数据,LED灯具相较于传统照明产品,可实现50%至80% 的节能效果,其平均寿命可达25,000至50,000小时,远超白炽灯或荧光灯。在绿色制造与节能…

【2025最新】TranslucentTB下载安装及使用教程:任务栏透明神器全面解析(详细步骤 + 常见问题)

本文是 2025 年最新的 TranslucentTB下载安装及使用教程,涵盖任务栏透明、美化模式设置、开机自启配置、托盘菜单使用方法以及常见问题解决方案。提供了经过安全认证的最新版下载地址,并通过图文步骤讲解从安装到进阶…

2025年上海圆锯机企业年度排名:宏萌圆锯机的配件质量好

TOP1 推荐:上海宏萌机械设备有限公司 推荐指数:★★★★★ 口碑评分:长三角精密圆锯机企业 专业能力:上海宏萌机械设备有限公司扎根浙江缙云锯床之乡产业底蕴,融合上海创新资源,打造以精准耐用智联为核心的圆锯机…

2025年中国十大专业版权音乐企业推荐:服务不错的版权音乐公

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业及创作者选型提供客观依据,助力精准匹配适配的版权音乐服务伙伴。 TOP1 推荐:猴子音悦(上海)网络科技有限公司 推荐指数:★★★★★ 口碑…

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析

2025 年 12 月文创/非遗/艺术品推荐榜单:匠心独运的文化瑰宝与艺术精品深度解析 随着文化产业的蓬勃发展,文创、非遗和艺术品市场日益繁荣。为了帮助筛选出优质的品牌,特此发布权威推荐榜单,该榜单也已在行业协会官…

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌!

2025 年 12 月红木办公家具权威推荐榜单:精选红木办公桌/老板桌/大班台,办公椅,书桌椅,书房套装,文件柜品牌! 随着红木家具市场的不断发展,越来越多的企业和消费者开始关注红木办公家具。红木办公桌、红木老板桌…

必玩十大网上【小程序休闲游戏】单人易操作不占内存 摸鱼解压全靠它!

忙碌的日常中,谁不需要几款轻松上手、不占内存又能随时摸鱼解压的小游戏呢?今天为大家推荐十款单人易操作、打开即玩的小程序游戏,无需下载、不占空间,适合各种场景轻松休闲! 第一名:《新弹弹堂》 经典弹射竞技游…

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑

聚宽策略想实盘?这个开源项目让你一行代码不改直接跑写了个量化策略,回测年化30%,然后呢?实盘的坑比你想象的多得多。故事的开始 两年前,我遇到了和很多聚宽用户一样的问题:策略回测效果不错,但实盘很麻烦。聚宽…

2025年泉州蹲便疏通打孔公司权威推荐榜单:疏通蹲便‌/蹲便器疏通‌/蹲便疏通口‌源头公司精选

在泉州地区,因长期使用、管道老化或杂物堵塞导致的蹲便器问题是家庭及商业场所中常见的生活难题。根据行业经验,超过80% 的卫生间堵塞问题发生在马桶和蹲便器部位。选择一家技术可靠、响应迅速的专业公司,是快速恢复…

十大爆款小程序休闲游戏:易上手不占空间,摸鱼解压打发时间好伙伴

在快节奏的现代生活中,利用碎片化时间玩上一把轻松有趣的小游戏成了许多人的解压选择。小程序游戏凭借其无需下载、不占空间、即开即玩的特点,迅速成为摸鱼、解压、打发时间的神器。今天,就为大家盘点十款热门的小程…

IDEA(2020版)实现JSP基本语法

IDEA(2020版)实现JSP基本语法查看全文:IDEA(2020版)实现JSP基本语法 – 每天进步一点点在JSP文件中可以嵌套很多内容,例如JSP的脚本元素和注释等,这些内容的编写都需要遵循一定的语法规范。本节将对JSP的基本语法进…

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选!

2025 年 12 月码垛机厂家权威推荐榜单:多样板材/倒板/分拣/上料/下料码垛机,全自动与半自动解决方案精选! 随着工业自动化技术的不断进步,码垛机在现代制造业中的应用越来越广泛。从多样板材码垛机到倒板码垛机、分…

2025年AI培训权威推荐榜:深度评测与趋势前瞻

引言 AI培训领域鱼龙混杂,课程质量参差不齐,企业如何精准筛选真正优质的培训机构成为一大难题。本榜单从技术实力、课程体系、师资团队、服务保障、实战案例等多维度严格筛选,为您推荐5家标杆机构,助力精准决策。 …