鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Search)

搜索框组件,适用于浏览器的搜索内容输入框等应用场景。

说明:

该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

接口

Search(options?: { value?: string, placeholder?: ResourceStr, icon?: string, controller?: SearchController })

参数:

参数名参数类型必填参数描述
valuestring设置当前显示的搜索文本内容。
从API version 10开始,该参数支持$$双向绑定变量。
placeholderResourceStr10+设置无输入时的提示文本。
iconstring设置搜索图标路径,默认使用系统搜索图标。
说明:
icon的数据源支持本地图片和网络图片。
- 支持的图片格式包括png、jpg、bmp、svg、gif和pixelmap。
- 支持Base64字符串。格式data:image/[png|jpeg|bmp|webp];base64,[base64 data], 其中[base64 data]为Base64字符串数据。
如果与属性searchIcon同时设置,则searchIcon优先。
controllerSearchController设置Search组件控制器。

属性

除支持通用属性外,还支持以下属性:

名称参数类型描述
searchButton10+value: string,
option?: SearchButtonOptions
搜索框末尾搜索按钮文本内容,默认无搜索按钮。
placeholderColorResourceColor设置placeholder文本颜色。
默认值:'#99182431'。
placeholderFontFont设置placeholder文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。
textFontFont设置搜索框内输入文本样式,包括字体大小,字体粗细,字体族,字体风格。目前仅支持默认字体族。
textAlignTextAlign设置文本在搜索框中的对齐方式。目前支持的对齐方式有:Start、Center、End。
默认值:TextAlign.Start
copyOption9+CopyOptions设置输入的文本是否可复制。
默认值:CopyOptions.LocalDevice,支持设备内复制。
设置CopyOptions.None时,当前Search中的文字无法被复制或剪切,仅支持粘贴。
searchIcon10+IconOptions设置左侧搜索图标样式。
cancelButton10+{
style? : CancelButtonStyle
icon?: IconOptions
}
设置右侧清除按钮样式。
默认值:
{
style:CancelButtonStyle.INPUT
}
fontColor10+ResourceColor设置输入文本的字体颜色。
默认值:'#FF182431'。
说明:
文本通用属性fontSize、fontStyle、fontWeight和fontFamily在textFont属性中设置。
caretStyle10+CaretStyle设置光标样式。
默认值:
{
width: '1.5vp',
color: '#007DFF'
}
enableKeyboardOnFocus10+booleanSearch获焦时,是否绑定输入法
默认值:true。从API version 10开始,获焦默认绑定输入法。
selectionMenuHidden10+boolean设置长按输入框或者右键输入框时,是否弹出文本选择菜单。
默认值:false
customKeyboard10+CustomBuilder设置自定义键盘。
说明:
当设置自定义键盘时,输入框激活后不会打开系统输入法,而是加载指定的自定义组件。
自定义键盘的高度可以通过自定义组件根节点的height属性设置,宽度不可设置,使用系统默认值。
自定义键盘采用覆盖原始界面的方式呈现,不会对应用原始界面产生压缩或者上提。
自定义键盘无法获取焦点,但是会拦截手势事件。
默认在输入控件失去焦点时,关闭自定义键盘,开发者也可以通过stopEditing方法控制键盘关闭。
如果设备支持拍摄输入,设置自定义键盘后,该输入框会不支持拍摄输入。
type11+SearchType设置输入框类型。
默认值:SearchType.Normal
maxLength11+number设置文本的最大输入字符数。
默认不设置最大输入字符数限制。
到达文本最大字符限制,将无法继续输入字符。

IconOptions10+对象说明

参数名参数类型必填参数描述
sizeLength图标尺寸,不支持百分比。
colorResourceColor图标颜色。
srcResourceStr图标/图片源。

CaretStyle10+对象说明

参数名参数类型必填参数描述
widthLength光标尺寸,不支持百分比。
colorResourceColor光标颜色。

SearchButtonOptions10+对象说明

参数名参数类型必填参数描述
fontSizeLength文本按钮字体大小,不支持百分比。
fontColorResourceColor文本按钮字体颜色。

CancelButtonStyle10+枚举说明

名称描述
CONSTANT清除按钮常显样式。
INVISIBLE清除按钮常隐样式。
INPUT清除按钮输入样式。

SearchType11+枚举说明

名称描述
Normal基本输入模式。
支持输入数字、字母、下划线、空格、特殊字符。
Email邮箱地址输入模式。支持数字,字母,下划线,以及@字符(只能存在一个@字符)。
Number纯数字输入模式。
PhoneNumber电话号码输入模式。
支持输入数字、+ 、-、*、#,长度不限。

事件

除支持通用事件外,还支持以下事件:

名称功能描述
onSubmit(callback: (value: string) => void)点击搜索图标、搜索按钮或者按下软键盘搜索按钮时触发该回调。
-value: 当前搜索框中输入的文本内容。
onChange(callback: (value: string) => void)输入内容发生变化时,触发该回调。
-value: 当前搜索框中输入的文本内容。
onCopy(callback: (value: string) => void)长按搜索框弹出剪切板之后,点击剪切板的复制按钮触发该回调。
-value: 复制的文本内容。
onCut(callback: (value: string) => void)长按搜索框弹出剪切板之后,点击剪切板的剪切按钮触发该回调。
-value: 剪切的文本内容。
onPaste(callback: (value: string, event11+: PasteEvent) => void)长按搜索框弹出剪切板之后,点击剪切板的粘贴按钮触发该回调。
- value: 粘贴的文本内容。
- event: 用户自定义的粘贴事件。
onTextSelectionChange(callback: (selectionStart: number, selectionEnd: number) => void)10+文本选择的位置发生变化时,触发该回调。
selectionStart:文本选择区域起始位置,文本框中文字的起始位置为0。
selectionEnd:文本选择区域结束位置。
onContentScroll(callback: (totalOffsetX: number, totalOffsetY: number) => void)10+文本内容滚动时,触发该回调。
totalOffsetX:文本在内容区的横坐标偏移,单位px。
totalOffsetY:文本在内容区的纵坐标偏移,单位px。

SearchController

Search组件的控制器,目前通过它可控制Search组件的光标位置。

导入对象

controller: SearchController = new SearchController()

caretPosition

caretPosition(value: number): void

设置输入光标的位置。

参数:

参数名参数类型必填参数描述
valuenumber从字符串开始到光标所在位置的长度。

stopEditing10+

stopEditing(): void

退出编辑态。

getTextContentRect10+

getTextContentRect(): RectResult

获取已编辑文本内容区域相对组件的位置和大小,返回值单位为像素。

返回值:

类型说明
RectResult已编辑文本内容的相对组件的位置和大小。

说明:

  • 返回的位置信息是相对Search组件中搜索图标的偏移值。
  • 不输入文本时,返回值中有相对Search组件的位置信息,但大小为0。
  • 返回值中的位置信息是第一个字符相对于可编辑组件的位置。

RectResult10+

位置和大小,单位均为像素。

参数类型描述
xnumber水平方向横坐标。
ynumber竖直方向纵坐标。
widthnumber内容宽度大小。
heightnumber内容高度大小。

getTextContentLineCount10+

getTextContentLineCount(): number

获取已编辑文本内容的行数。

返回值:

类型说明
number已编辑文本内容行数。

getCaretOffset11+

getCaretOffset(): CaretOffset

返回当前光标所在位置信息。

返回值:

类型说明
CaretOffset光标相对输入框的位置。

说明:

  • 返回的位置信息是相对Search组件中搜索图标的偏移值。
  • 不输入文本时,返回值中有相对Search组件的位置信息。
  • 返回值中的位置信息是光标相对于可编辑组件的位置。
  • 在当前帧更新光标位置同时调用该接口,该接口不生效。

示例

示例1

// xxx.ets
@Entry
@Component
struct SearchExample {@State changeValue: string = ''@State submitValue: string = ''@State positionInfo: CaretOffset = { index: 0, x: 0, y: 0 }controller: SearchController = new SearchController()build() {Column({space: 10}) {Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)Text('onChange:' + this.changeValue).fontSize(18).margin(15)Search({ value: this.changeValue, placeholder: 'Type to search...', controller: this.controller }).searchButton('SEARCH').width('95%').height(40).backgroundColor('#F5F5F5').placeholderColor(Color.Grey).placeholderFont({ size: 14, weight: 400 }).textFont({ size: 14, weight: 400 }).onSubmit((value: string) => {this.submitValue = value}).onChange((value: string) => {this.changeValue = value}).margin(20)Button('Set caretPosition 1').onClick(() => {// 设置光标位置到输入的第一个字符后this.controller.caretPosition(1)})Button('Get CaretOffset').onClick(() => {this.positionInfo = this.controller.getCaretOffset()})}.width('100%')}
}

search

示例2

// xxx.ets
@Entry
@Component
struct SearchExample {@State changeValue: string = ''@State submitValue: string = ''build() {Column() {Text('onSubmit:' + this.submitValue).fontSize(18).margin(15)Search({ value: this.changeValue, placeholder: 'Type to search...' }).searchButton('SEARCH').searchIcon({src: $r('app.media.search')}).cancelButton({style: CancelButtonStyle.CONSTANT,icon: {src: $r('app.media.cancel')}}).width('90%').height(40).maxLength(20).backgroundColor('#F5F5F5').placeholderColor(Color.Grey).placeholderFont({ size: 14, weight: 400 }).textFont({ size: 14, weight: 400 }).onSubmit((value: string) => {this.submitValue = value}).onChange((value: string) => {this.changeValue = value}).margin(20)}.width('100%')}
}

searchButton

示例3

// xxx.ets
@Entry
@Component
struct SearchExample {controller: SearchController = new SearchController()@State inputValue: string = ""// 自定义键盘组件@Builder CustomKeyboardBuilder() {Column() {Button('x').onClick(() => {// 关闭自定义键盘this.controller.stopEditing()})Grid() {ForEach([1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#'], (item: number | string) => {GridItem() {Button(item + "").width(110).onClick(() => {this.inputValue += item})}})}.maxCount(3).columnsGap(10).rowsGap(10).padding(5)}.backgroundColor(Color.Gray)}build() {Column() {Search({ controller: this.controller, value: this.inputValue})// 绑定自定义键盘.customKeyboard(this.CustomKeyboardBuilder()).margin(10).border({ width: 1 })}}
}

customKeyboard

最后,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(Harmony NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(Harmony NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(Harmony NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

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

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

相关文章

使用 Jenkins 管道在 Docker Hub 中构建 Docker 镜像

Jenkins Pipeline 是一个强大的工具,可以自动执行部署。在各个阶段之间拆分的灵活和自定义操作是尝试此功能的一个很好的理由。 构建您自己的 Docker 镜像并将其上传到 Docker Hub 以保持存储库更新是了解 Jenkins Pipeline 如何改进您的工作方式的一个很好的示例。…

数据结构(三)——栈

三、栈、队列和数组 3.1 栈 3.1.1 栈的基本概念 线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n 0时线 性表是一个空表。若用L命名线性表,则其一般表示为 L (a1, a2, … , ai , ai1, ……

Java基础—2

1.面向对象 1.1 与面向过程区分 了解 Java是一种面向对象的编程语言,与面向过程的编程方式有明显的区别。 思维方式:面向对象编程(OOP)是基于对象的概念,强调将问题分解为对象,通过对象之间的交互来解决…

【GPT-SOVITS-02】GPT模块解析

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

Ansible管理主机的清单------------inventory

目录 一、 Ansible组成 二、inventory 主机清单 (1)主机变量使用 (2)inventory 中的变量含义 (3)组变量使用 (4)组嵌套使用 三、ansible命令 一、 Ansible组成 INVENTORY:Ansible管理主机的清单 /etc/ansible/hosts 需要管理的服务清单,(将你需要管理的主机 …

机器学习-绪论

机器学习致力于研究如何通过计算的手段、利用经验来改善系统自身的性能。在计算机系统中,“经验”通常以“数据”的形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法…

排序算法:快速排序(递归)

文章目录 一、创始人托尼霍尔的快速排序二、挖坑法三、前后指针法 所属专栏:C初阶 引言:这里所说的快速排序有三种,第一种是霍尔大佬自创的,还有一种叫做挖坑法,另外一种叫前后指针法 一、创始人托尼霍尔的快速排序 1.这里我们先…

VUE3 异步组件

概念 在大型项目中&#xff0c;我们可能需要拆分应用为更小的块&#xff0c;并仅在需要时再从服务器加载相关组件。Vue 提供了 defineAsyncComponent 方法来实现此功能&#xff1a; 使用 父组件 <template><div><asyncSon></asyncSon></div> <…

敏感信息泄露到接管云服务器

通过信息收集发现子域为xx.xx.com网站&#xff0c;打开先找功能点&#xff0c;测试登录&#xff0c;是微信扫描登录&#xff0c;自己太菜&#xff0c;测试一圈没测出来什么 指纹识别发现是js开发&#xff0c;如果登录或者找回密码不是扫码登录的话&#xff0c;八成是前端验证&a…

性能测试-Jmeter常用元件基础使用

一、Jmeter元件 #线程组 添加HTTP请求 #配置元件 配置元件内的元件都是用于进行初始化的东西 #监听器 监听器主要是用来获取我们使用取样器发送请求后的响应数据相关信息 #定时器 定时器主要用来控制我们多久后执行该取样器&#xff08;发送请求&#xff09; #前置处理器 前置处…

为什么手机和电视ip地址不一样

在数字化时代&#xff0c;我们每天都会与各种电子设备打交道&#xff0c;其中最常见的就是手机和电视。当我们连接到互联网时&#xff0c;这些设备都会被分配一个独特的IP地址&#xff0c;用于在网络上进行标识和通信。然而&#xff0c;您可能已经注意到&#xff0c;即使手机和…

1.MongoDB的特点与应用场景

什么是 MongoDB &#xff1f; MongoDB 是基于 C 开发的 NOSQL 开源文档数据库 &#xff0c;是最像关系型数据库的 nosql&#xff0c;功能也是最丰富的 nosql&#xff0c;它具有所以的可伸缩性&#xff0c;灵活性&#xff0c;高性能&#xff0c;高扩展性的优势。 大致有如下特…

【Stable Diffusion】入门-04:不同模型分类+代表作品+常用下载网站+使用技巧

目录 1 模型简介2 模型文件构成和加载位置2.1 存储位置2.2 加载模型 3 模型下载渠道3.1 HuggingFace3.2 Civitai 4 模型分类4.1 二次元模型4.2 写实模型4.3 2.5D模型 1 模型简介 拿图片给模型训练的这个过程&#xff0c;通常被叫做“喂图”。模型学习的内容不仅包括对具体事物…

云平台基本介绍 —— 什么是云原生及云服务器的购买和使用

云原生概述 在了解什么是云原生之前&#xff0c;我们先了解一下什么是云计算 什么是云计算 云计算是一种通过互联网提供计算资源和服务的模式。它允许用户通过网络访问虚拟化的计算资源&#xff0c;包括计算能力、存储空间和应用程序&#xff0c;而无需拥有实际的物理设备。…

uniapp h5 部署

uniapp 配置 服务器文件路径 打包文件结构 //nginx 配置 server {listen 8300;server_name bfqcwebsiteapp;charset utf-8;#允许跨域请求的域&#xff0c;* 代表所有add_header Access-Control-Allow-Origin *;#允许带上cookie请求add_header Access-Control-Allow-C…

WRF模型运行教程(ububtu系统)-- IV-1.模型相关文件参数说明【namelist.wps文件、namelist.input文件】

一、namelist.wps文件 文件位置&#xff1a;Build_WRF/WPS WPS模块有主要的三大程序geogrid.exe、ungrib.exe、metgrid.exe&#xff0c;namelist.wps文件是输入到这三大程序的配置文件。 namelist.wps文件一共包括四个部分&#xff1a;share, geogrid, ungrib和metgrid。 每个主…

2、鸿蒙学习-申请调试证书和调试Profile文件

申请发布证书 发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书&#xff0c;可保障软件代码完整性和发布者身份真实性。证书格式为.cer&#xff0c;包含公钥、证书指纹等信息。 说明 请确保您的开发者帐号已实名认证。每个帐号最多申请1个发布证书。 1、登录AppGa…

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…

面试笔记——Redis(缓存击穿、缓存雪崩)

缓存击穿 缓存击穿&#xff08;Cache Breakdown&#xff09;&#xff1a; 当某个缓存键的缓存失效时&#xff08;如&#xff0c;过期时间&#xff09;&#xff0c;同时有大量的请求到达&#xff0c;并且这些请求都需要获取相同的数据&#xff0c;这些请求会同时绕过缓存系统&a…

豆瓣电影信息爬取与可视化分析

目录 一、项目背景 二、代码 三、总结 一、项目背景 &#xff08;1&#xff09;利用requests库采集豆瓣网分类排行榜 (“https://movie.douban.com/chart”)中各分类类别前100部电影的相关信息并存储为csv文件。 &#xff08;2&#xff09;利用获取的13个分类类别共1300部电…