【每日学点HarmonyOS Next知识】输入法光标控制、Text部分圆角、Web组件缓存、Grid问题、Web出现PC效果

server/2025/3/6 12:07:52/
1、HarmonyOS 输入法光标控制?

在onSubmit回调里写组件间的光标跳转。onSubmit回车之后【.enterKeyType(EnterKeyType.Next)】默认会把键盘关闭,我再去focusControl.requestFocus(nextKeyStr)就会呈现一个键盘先关闭再弹起的效果,这样看起来很不流畅,按理想状态来说,设置了EnterKeyType.Next点击‘下一步’应该是流畅的光标跳转到下一个输入框吧?但是onSubmit默认会关闭键盘。有什么办法解决流畅问题的?是要去自定义输入法吗?

  1. 在EntryAbility中
//将 onWindowStageCreate(windowStage: window.WindowStage): void方法替换为:onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');AppStorage.setOrCreate('windowStage',windowStage);
});}
  1. 将Index.ets中代码替换为:
import { window } from '@kit.ArkUI'
@Entry
@Component
struct ListExample {private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]selectIndex:number = 0scroller: Scroller = new Scroller()@State keyboardHeight:number = 0aboutToAppear() {let windowClass: window.Window = (AppStorage.get('windowStage') as window.WindowStage).getMainWindowSync()windowClass.on('keyboardHeightChange', (data) => {this.keyboardHeight = px2vp(data)});}build() {Column() {List({ space: 20, initialIndex: 0,scroller:this.scroller }) {ForEach(this.arr, (item: number) => {ListItem() {Column(){Text('a' + item + '-' + this.keyboardHeight).width('100%').height(100).fontSize(16).textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)TextInput().width('100%').height(80).margin({top:10}).id('a'+item).onFocus(()=>{console.log('focus:  a'+item)this.selectIndex = itemconsole.log('aaa' + this.selectIndex)}).onSubmit((enterKey: EnterKeyType, event: SubmitEvent)=>{focusControl.requestFocus('a'+(this.selectIndex+1));this.scroller.scrollToIndex(this.selectIndex+1,true);event.keepEditableState();})}}}, (item: string) => item)}.listDirection(Axis.Vertical) // 排列方向.scrollBar(BarState.Off).divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线.edgeEffect(EdgeEffect.Spring) // 边缘效果设置为Spring.width('90%').margin({  bottom: this.keyboardHeight })}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })}
}
2、HarmonyOS text组件如何实现部分圆角?

text组件如何实现部分圆角 咨询场景描述:text组件期望实现左下和右下位置圆角,左上和右上位置不进行圆角,请问该如何实现

可以添加borderRadius({bottomLeft : 10,bottomRight : 10})属性实现,参考demo:

@Entry
@Component
struct TextExample6 {@State text: string = '你叫什么名字'build() {Column() {Text(this.text).fontSize(16).border({ width: 1 }).lineHeight(20).maxLines(1).width(300).margin({ left: 20, top: 20 }).borderRadius({bottomLeft : 10,bottomRight : 10})}.margin({top : 200})}
}
3、HarmonyOS 浏览器 Web 组件如何获取缓存数据大小或缓存数据明细,如何删除本地缓存数据?

可以通过removeCache()接口清除已经缓存的资源,参考demo:

struct WebComponent {@State mode: CacheMode = CacheMode.None;controller: web_webview.WebviewController = new web_webview.WebviewController();build() {Column() {Button('removeCache').onClick(() => {try { // 设置为true时同时清除rom和ram中的缓存,设置为false时只清除ram中的缓存 this.controller.removeCache(true); } catch (error) {let e: business_error.BusinessError = error as business_error.BusinessError;console.error(`ErrorCode: ${e.code}, Message: ${e.message}`);}})Web({ src: 'www.huawei.com', controller: this.controller }).cacheMode(this.mode)}}
} 

可以参考缓存方案文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cookie-and-data-storage-mgmt-V5
Cookie是网络访问过程中,由服务端发送给客户端的一小段数据。客户端可持有该数据,并在后续访问该服务端时,方便服务端快速对客户端身份、状态等进行识别。
当Cookie SameSite属性未指定时,默认值为SameSite=Lax,只在用户导航到cookie的源站点时发送cookie,不会在跨站请求中被发送。
Web组件提供了WebCookieManager类,用于管理Web组件的Cookie信息。Cookie信息保存在应用沙箱路径下/proc/{pid}/root/data/storage/el2/base/cache/web/Cookiesd的文件中。

4、HarmonyOS 设备上Grid 无法触发onReachEnd?

参考开发指南(代码)实现:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-grid-V5#ZH-CN_TOPIC_0000001930676589__edgeeffect10
使用.edgeEffect(EdgeEffect.Spring, { alwaysEnabled: true })这样就能触发回弹效果,同时也就能触发onReachEnd

5、HarmonyOS web加载本地html显示的为pc端网页效果?

head中添加meta即可 <meta name="viewport" content="width=device-width, initial-scale=1.0"\>


http://www.ppmy.cn/server/172866.html

相关文章

python如何使输出的数为整数

python使输出的数为整数的方法&#xff1a; 1、使用for循环语句遍历列表元素 2、将列表的元素转换成字符串格式并用if语句判断是否不包含小数点&#xff0c;如果是则输出这个数。这样就可以使输出的数为整数了。 完整代码如下&#xff1a; 执行结果如下&#xff1a;

Web服务器配置

配置虚拟主机 通过虚拟主机&#xff0c;可以实现用自定义的域名来访问&#xff0c;并且可以为不同的域名指定不同的站点目录。 配置IP地址和域名的映射关系 申请真实的域名需要一定的费用&#xff0c;为了方便开发&#xff0c;可以通过修改hosts文件来实现将任意域名解析到本…

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…

确定信号分析:从傅里叶级数到信号带宽的Matlab实践

关键词&#xff1a;傅里叶变换 信号能量 功率谱密度 自相关函数 信号带宽 Matlab仿真 内容摘要&#xff1a; 本文系统讲解确定信号分析的核心理论与Matlab实践&#xff0c;涵盖周期信号的傅里叶级数展开、非周期信号的傅里叶变换及性质、信号能量与功率的计算、自相关函数与频…

TypeScript系列04-泛型编程

本文探讨TypeScript泛型编程&#xff0c;内容涵盖&#xff1a; 泛型基础&#xff1a;包括泛型函数、接口、类和约束&#xff0c;这些是构建可重用和类型安全代码的基础。内置工具类型&#xff1a;掌握了TypeScript提供的强大工具类型&#xff0c;如Partial、Required、Pick等&…

容器 /dev/shm 泄漏学习

容器 /dev/shm 泄漏的介绍 在容器环境中&#xff0c;/dev/shm 是一个基于 tmpfs 的共享内存文件系统&#xff0c;通常用于进程间通信&#xff08;IPC&#xff09;和临时数据存储。由于其内存特性&#xff0c;/dev/shm 的大小是有限的&#xff0c;默认情况下 Docker 容器的 /de…

ASP.NET Core JWT认证与授权

1.JWT结构 JSON Web Token&#xff08;JWT&#xff09;是一种用于在网络应用之间安全传输声明的开放标准&#xff08;RFC 7519&#xff09;。它通常由三部分组成&#xff0c;以紧凑的字符串形式表示&#xff0c;在身份验证、信息交换等场景中广泛应用。 2.JWT权限认证 2.1添…

硬件工程师入门教程

1.欧姆定律 测电压并联使用万用表测电流串联使用万用表&#xff0c;红入黑出 2.电阻的阻值识别 直插电阻 贴片电阻 3.电阻的功率 4.电阻的限流作用 限流电阻阻值的计算 单位换算关系 5.电阻的分流功能 6.电阻的分压功能 7.电容 电容简单来说是两块不连通的导体加上中间的绝…