鸿蒙App开发,最牛输入框TextField火力全开!

2023-12-02 14:50

本文主要是介绍鸿蒙App开发,最牛输入框TextField火力全开!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​一、新增API

实际项目开发中,输入框展示的效果通常会设计为底部一根带有颜色的线条,安卓中实现要么自定义背景,要么自定义控件,相对较麻烦。

鸿蒙对此做了优化,提供了一个属性,只需要设置需要的颜色即可实现该效果。

别看这一点功能很小,但可以看得出华为是用心在做鸿蒙系统,对开发者是真的福音!

 

Xml用法

ohos:basement="#FF0000"

Java用法

// 创建颜色shapeElement对象
ShapeElement shapeElement = new ShapeElement();
shapeElement.setRgbColor(new RgbColor(0xFF0000FF));
// 设置
textField.setBasement(shapeElement);

效果如下图:

下面演示另一种背景实现方法:

 

先看效果图:

 

 

代码如下:

// 定义背景shape文件:text_field_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shapexmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:shape="rectangle">
​<cornersohos:radius="30vp"/><solidohos:color="#FFEBEBEB"/>
</shape>
// 布局文件中引用
<TextFieldohos:id="$+id:tf"ohos:height="60vp"ohos:width="match_parent"ohos:text_alignment="vertical_center"ohos:left_padding="20vp"ohos:right_padding="20vp"ohos:text_size="30vp"ohos:background_element="$graphic:text_field_bg"/>

 


 

二、优化API

 

1、优化内容监听功能

 

与安卓相比,TextField文本内容更新监听做了精简优化,从3个回调监听变成了1个。

 

Text.TextObserver:文本内容更新观察者

 

该观察者为一个interface接口,需要重写onTextUpdated方法,该方法有4个参数:

参数1,String content:这次更新后,输入框文本内容字符串。

参数2,int start:这次更新前,文本内容的起始位置。

参数3,int before:这次更新前,文本内容长度。

参数4,int count:这次更新的文本内容与更新前文本内容对比,变化的长度。

 

监听变化代码如下:

TextField textField = (TextField) findComponentById(ResourceTable.Id_tf);
Text.TextObserver textUpdateObserver = new Text.TextObserver() {@Overridepublic void onTextUpdated(String content, int start, int before, int count) {// content:这次更新后,输入框文本内容字符串// start:这次更新前,文本内容的起始位置// before:这次更新前,文本内容长度// count:这次更新的文本内容与更新前文本内容对比,变化的长度}
};
// 添加观察者
textField.addTextObserver(textUpdateObserver);
// 移除观察者
textField.removeTextObserver(textUpdateObserver);

 

2、优化文本选择器相关API

 

在安卓系统中,长按文本选择后会弹出剪切复制等的文本选择器,如下图效果:

 

 

安卓产品经理:明天你适配下所有机型,将文本选择器改成可配置的颜色!

安卓程序员:……

安卓程序员:mmp!

安卓并未提供相关API,只能通过主题和反射去修改,但效果极差,许多手机还不生效。

 

现在鸿蒙优化了,喜大普奔啊!

 

1、 设置选中区域颜色

 

Xml用法

// 设置十六进制颜色值
ohos:selection_color="#0000FF"
// 或,使用颜色引用
ohos:selection_color="$color:blue"

Java用法

textField.setSelectionColor(Color color)

 

使用蓝色,效果如下图:

 

 


 

2、 设置气泡尺寸

 

Xml用法

 

设置光标下气泡尺寸:

// 气泡宽度
ohos:bubble_width="100vp"
// 气泡高度
ohos:bubble_height="50vp"

 

设置选中文本左右两边气泡尺寸:

// 设置左边气泡尺寸
ohos:bubble_left_width="50vp"
ohos:bubble_left_height="100vp"
// 设置右边气泡尺寸
ohos:bubble_right_width="20vp"
ohos:bubble_right_height="50vp"

 

Java用法

 

设置光标下气泡尺寸:

// 单独设置宽高
textField.setBubbleWidth(int width);
textField.setBubbleHeight(int height);
// 一起设置
textField.setBubbleSize(int width, int height);

 

设置选中文本左右两边气泡尺寸:

// 设置左边气泡尺寸
textField.setLeftBubbleWidth(int width);
textField.setLeftBubbleHeight(int height);
textField.setLeftBubbleSize(int width, int height);
// 设置右边气泡尺寸
textField.setRightBubbleWidth(int width);
textField.setRightBubbleHeight(int height);
textField.setRightBubbleSize(int width, int height);

 

效果如下图:

 

2、 设置气泡背景图

 

Xml用法

 

设置光标下的气泡背景(可以是媒体资源图片,如png、jpg,也可以是shape设置颜色背景),这里只使用媒体图片举例:

ohos:element_cursor_bubble="$media:icon"

 

设置选中文本左右两边气泡背景(可以是媒体资源图片,如png、jpg,也可以是shape设置颜色背景),这里只使用媒体图片举例:

// 左边气泡图片
ohos:element_selection_left_bubble="$media:icon"
// 右边气泡图片
ohos:element_selection_right_bubble="$media:icon"

 

Java用法

 

设置光标下的气泡背景,与xml一样只举例媒体图片:

TextField textField = (TextField) findComponentById(ResourceTable.Id_text_helloworld);
Resource resource = getResourceManager().getResource(ResourceTable.Media_icon);
PixelMapElement pixelMapElement = new PixelMapElement(resource);
// 设置图片气泡
textField.setBubbleElement(pixelMapElement);

 

设置选中文本左右两边气泡背景,与xml一样只举例媒体图片:

TextField textField = (TextField) findComponentById(ResourceTable.Id_text_helloworld);
Resource resource = getResourceManager().getResource(ResourceTable.Media_icon);
PixelMapElement pixelMapElement = new PixelMapElement(resource);
// 设置左边气泡
textField.setSelectionLeftBubbleElement(pixelMapElement);
// 设置右边气泡
textField.setSelectionRightBubbleElement(pixelMapElement);

 

效果如下图:

 

 

三、常规API

 

其他常用API与安卓类似, 下面列举一些介绍。

 

1、 设置输入框弹出键盘类型

 

鸿蒙对输入类型做了精简,只提供了4中枚举类型,这里特别要提的是,鸿蒙提供了一种新的枚举类型:pattern_null,设置后,输入框获取焦点不会弹出键盘,,具体可以下面用法。

 

Xml用法

// 设置后,输入框获取到焦点,不弹出键盘
ohos:text_input_type="pattern_null"
// 文本类型键盘
ohos:text_input_type="pattern_text"
// 密码类型键盘,输入框变成了*号密码类型
ohos:text_input_type="pattern_password"
// 数字类型键盘
ohos:text_input_type="pattern_number"

 

Java用法

// 设置后,输入框获取到焦点,不弹出键盘
textField.setTextInputType(InputAttribute.PATTERN_NULL);
// 文本类型键盘
textField.setTextInputType(InputAttribute.PATTERN_TEXT);
// 密码类型键盘,输入框变成了*号密码类型
textField.setTextInputType(InputAttribute.PATTERN_PASSWORD);
// 数字类型键盘
textField.setTextInputType(InputAttribute.PATTERN_NUMBER);

 

2、 设置输入框弹出键盘类型

 

很遗憾,作者本以为会有该功能,但……

 

可是我找到了TextFilter类啊!TextField却没有与之关联的方法,由于鸿蒙目前没有开放Java源代码,无法查看,所以……

 

 

应该是提交代码的时候忘记了……或者是……git的锅!

 

安卓提供了属性android:digits和java方法setFilters,用来限制输入框只能输入自己限定的字符,这个功能很常用,目前看来只能通过上面提到的TextObserver监听去控制。

 

3、 其他常用API

 

(1)获取输入框内容:

 

textField.getText()textField.getEditableString()

 

(2)设置占位文本:

 

Xml用法

// hint内容ohos:hint="HarmonyOS"// hint颜色ohos:hint_color="#0000FF"

Java用法

// hint内容textField.setHint("HarmonyOS");// hint颜色textField.setHintColor(Color.RED);

 

(3)设置占位文本:

 

Xml用法

// 使用垂直居中,也可以使用其他对其属性ohos:text_alignment="vertical_center"

 

Java用法

// 使用垂直居中,也可以使用其他对其属性textField.setTextAlignment(TextAlignment.VERTICAL_CENTER);

 

其他的如:设置行高、行距,字间距等这些功能就不再演示,与安卓一样。

这篇关于鸿蒙App开发,最牛输入框TextField火力全开!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445745

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件