【HarmonyOS NEXT】FAQ之应用框架(ArkUI-7)

1、XComponent组件如何设置背景颜色

XComponent组件仅在type为TEXTURE时支持设置,SURFACE("surface")和COMPONENT("component")类型均不支持通用属性包括背景颜色设置,需采用EGL/OpenGLES或子组件内容设置。

2、如何取消点击输入框时的背景高亮效果

可以通过多态样式来自定义组件在点击、按压、获焦时的不同形态。TextInput组件可以通过设置其按压时的形态来实现取消点击输入框时的背景高亮效果。

3、组件如何设置模糊效果

可以通过组件的通用属性backdropBlur,blur,backgroundBlurStyle,foregroundBlurStyle来设置组件的模糊效果。

4、UI布局默认是多少vp为基准,以达到不同机器自适应
  • 不管屏幕分辨率是多少,屏幕密度是多少,组件在视觉上呈现的效果是一致的。

  • vp具体计算公式为:vp= px/(DPI/160)

  • px就是屏幕真实物理像素值,densityPixels是屏幕密度,是和标准DPI的比例,常见取值有0.75,1.0,1.5,2.0,3.0等,在HarmonyOS中,标准DPI为160,以华为mate 40 pro为例,查询得到的densityPixels=3.5,densityDPI=560。densityDPI就是我们通常所说的系统屏幕密度,densityPixels就是屏幕密度和标准dpi(160)的比率。想要查看真机的dpi,可以调用屏幕属性中的display接口查询。

5、如何获取文本框里的文字宽度

使用measureText计算指定文本单行布局的宽度。

6、如何使应用一键变灰

通过设置页面根容器的饱和度saturate来实现。

7、如何设置屏幕亮度

setWindowBrightness可以用于设置屏幕亮度,屏幕亮度值,值为0-1之间。1表示最亮。

8、TextInput是否能自定义hover效果

当前不支持,暂未提供相关接口。

9、如何去除tabbar滑动到边缘时的蒙层效果

在其父组件tabs上添加属性fadingEdge,并将值设置为false。

10、如何实现两层Tab嵌套滑动的效果

例如一级Tabs组件下嵌套二级的Tabs,二级Tabs第一个页面左滑或最后一个页面右滑不能切换一级Tabs标签,该问题如何解决。

可以通过PanGesture结合TabsController的changeIndex方法实现一二级tab切换问题。给二级Tabs第一个页面和最后一个页面添加PanGesture事件,判断滑动方向,然后根据滑动方向,使用changeIndex来切换对应的一级Tabs页签。

11、Grid组件的scrollBar是否支持自定义
  • Grid组件的默认滑动条scrollBar不支持自定义样式。

  • 但是可以通过隐藏默认滑动条,并绑定一个ScrollBar组件,就满足该场景。

12、List组件如何设置两端的渐变效果

List组件本身不支持设置两端渐变,但是可以结合LinearGradient对象实现效果。

13、过长文字如何滚动显示

跑马灯组件,用于滚动展示一段单行文本,仅当文本内容宽度超过跑马灯组件宽度时滚动。

14、XComponent 怎么设置成透明

XComponent显示的内容,可由开发者自定义绘制,通用属性中的背景设置、透明度设置和图像效果按照type类型有限支持。type为TEXTURE时通用属性可以支持背景颜色设置、透明度设置和图像效果中的shadow属性,除颜色外的背景设置和其他图像效果暂不支持,建议使用EGL/OpenGLES提供的接口设置相关内容。

15、如何为一个组件同时绑定单击和双击事件

通过组合手势绑定,双击手势在前,单击手势在后,就可以同时绑定单击和双击事件。

16、半模态转场如何控制固定高度

可以通过bindSheet的options?: SheetOptions参数对高度进行控制,暂不支持控制固定宽度。

17、如何实现拖拽时列表项占位动画的效果

Grid拖拽时,列表项默认为占位动画效果。具体实现步骤如下:

  1. 在Grid组件下设置属性editMode(true)设置Grid是否进入编辑模式,进入编辑模式可以拖拽Grid组件内部GridItem。

  2. 在onItemDragStart回调中设置拖拽过程中显示的图片。

  3. 在onItemDrop中获取拖拽起始位置,和拖拽插入位置,在onDrag回调中完成交换数组位置逻辑。

18、ArkUI组件的字符串中如何实现字符串变量拼接

可以结合资源文件结合%d、%s的方式进行实现。

19、控制中心的下拉背景实时模糊是如何实现的

实时模糊,就是通过状态变量实时改变模糊值。实现模糊有如下两种实现方式:

  • 方式一:设置组件模糊,使用blur属性。参考图像效果。

  • 方式二:设置窗口模糊,使用setBlur接口或者setBackdropBlur接口。参考window窗口。

20、如何获取图片的宽高
  • 方法一:获取Image组件的父组件宽高。

  • 方法二:通过Image组件的onComplete事件,图片数据加载成功和解码成功时均触发该回调,返回成功加载的图片尺寸。

21、ArkUI如何通过代码动态创建组件

ArkUI使用ArkTS声明式开发范式,开发者无法持有组件实例,在声明时通过渲染控制语法以及动态构建UI元素的方式,控制组件的创建。

22、如何解决Web页面输入框拉起键盘后,页面头部被截断的问题

如下几种问题现象:

  1. 通过子窗口的方式实现弹窗,弹窗中嵌入了web页面。

  2. web页面中有TextInput输入框,点击输入框,拉起键盘。

  3. 子窗口整体上移,但是web页面头部被截断了。

可以通过监听软键盘弹出和收起来解决此问题:当软键盘弹出时,子窗口高度设置为屏幕高度-软键盘高度;当软键盘收起时,弹出子窗口高度为屏幕高度

23、Navigation如何隐藏导航栏

Navigation设置了隐藏属性,仍然出现空白导航栏,跳转至新的页面后导航栏会重新出现。

设置Navigation和NavDestination的属性hideTitleBar值为true。

24、TextInput组件内部如何让内容从最左侧边框处开始排列

设置padding为0的属性可以实现需求效果。

25、如何获取List的实际大小

在对于应用的测试阶段中,可使用getInspectorByKey接口获取组件属性,具体实现可参考链接中示例代码。

更多详情查看:文档中心

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值