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

1、如何设置子组件宽度使其不超过父组件的大小

可以使用尺寸设置中的calc计算属性,对子组件的宽度进行判断,来设置子组件宽度。

2、Image或者ImageSpan传入一个string类型的路径时无法加载图片

目前规格上只支持常量,需要把string提取出来用$r( )包裹。

3、Image组件如何读入沙箱内的图片

Image组件不能直接传入应用沙箱路径,需要传入应用沙箱uri。

  1. 参考fileuri模块示例代码获取文件的沙箱路径。

  2. 然后通过调用fileuri.getUriFromPath方法将沙箱路径转化为沙箱uri,传入之后即可正常显示沙箱图片。

4、如何实现事件透传

例如在一个Stack中,有两个兄弟组件,组件A被组件B盖住,用户点击组件B时能否将点击事件透传至组件A,触发组件A的onClick回调而不触发组件B的onClick回调。

组件B设置hitTestBehavior属性为HitTestMode.None即可。

5、Text组件设置maxLines后如何确定文本是否被隐藏

可以通过MeasureText.measureTextSize来判断Text文本的高度是否超出maxLines设置的高度进行判断。

6、如何实现类似keyframes的效果

可以通过delay的动画,或者onFinish里拉起新的动画实现类似效果。

7、ArkTS获取组件位置和大小的接口

在如下场景中使用对应接口获取组件信息:

  • 场景一:应用测试阶段。

    • 通过getInspectorByKey获取指定组件标识id组件的所有属性,返回结果为组件属性列表的JSON字符串。

  • 场景二:触发点击事件。

    • 在点击事件中,事件的回调信息中包含目标组件的区域信息。

  • 场景三:组件区域发生变化。

    • 组件区域变化事件onAreaChange(event: (oldValue: Area, newValue: Area) => void)可以获取组件信息。

8、外部容器Stack能否满足适应内部容器组件的圆角等样式

暂不支持让父元素适应子元素的圆角。

9、Stack布局设置Alignment.BottomStart没有生效

参数alignContent与属性align存在冲突,如果两个都设置,后设置会生效。

10、布局是否支持css里的calc(100vh - 100px)类似能力

支持calc属性,具体可以参考文档示例代码中的calc使用方法。

11、如何实现键盘避让机制

组件设置expandSafeArea属性可以控制组件扩展其安全区域,实现键盘避让,键盘拉起时布局不发生改变。

12、自定义弹窗CustomDialog的maskRect属性中x,y是否支持calc

CustomDialogController在设置弹窗时,maskRect属性可以设置弹窗的偏移量和大小,其中x,y属性控制弹窗的偏移量。这两个属性目前不支持calc。

13、如何获取router.back传递的参数

在onPageShow回调方法里通过router.getParams方法获取返回值。

14、焦点事件onBlur/onFocus回调无法触发

焦点事件默认情况下需要外接键盘的Tab键,或方向键触发,点击触发焦点事件需要添加焦点控制属性focusOnTouch。

15、Scroll里面套一个grid,如何禁用grid的滑动事件

可以通过onScrollFrameBegin事件和scrollBy方法实现容器嵌套滚动。

16、如何实现一个组件不停地旋转

可以通过属性动画的方式实现。

17、键盘拉起时列表无法上下滑动

需要在列表子项中添加focusable(true)进行获焦。

18、键盘移动焦点对象按下enter,为什么不会触发点击事件

组件的内置的点击事件和开发者自定义的onClick点击事件默认会和空格键绑定,并非与enter键绑定(UX规格)。

19、多层组件嵌套button,如何阻止事件传递

可以通过将button组件绑定参数stopPropagation来控制冒泡传递。

20、使用router或Navigator实现页面跳转时,如何关闭页面间转场动效
  1. 参考页面间转场示例在当前页面和目标页面中定义pageTransition方法。

  2. 将页面入场组件PageTransitionEnter和页面退场组件PageTransitionExit的动效参数duration都设置为0。

21、在容器组件嵌套的场景下,如何解决手势拖拽事件出现错乱的问题

PanGesture用于触发拖动手势事件,滑动的最小距离distance默认为5vp时拖动手势识别成功。可以将distance值设为1,使拖动更灵敏,避免造成事件错乱。

22、是否支持使用fontFamily属性设置不同的字体

默认字体'HarmonyOS Sans',且当前只支持这种字体。

23、当父组件绑定了onTouch,其子组件Button绑定了onClick,如何做到点击Button只响应Button的onClick,而不用响应父组件的onTouch

可以在Button组件中绑定onTouch,并在onTouch中使用stopPropagation()阻止onTouch冒泡传递到父组件阻止冒泡传递。

24、绑定菜单后无法使用右键触发菜单

目前菜单已支持点击、长按和右键方式。

25、点击文本输入框,如何屏蔽系统默认键盘弹起行为

设置TextInput组件的focusable属性为false,此组件则不可获焦,就不会拉起系统默认的键盘。

26、如何阻止组件的鼠标事件冒泡到父组件

在组件的onMouse回调中执行stopPropagation即可阻止鼠标事件冒泡到父组件。

27、如何实现上下切换的页面间跳转动画

可以使用pageTransition函数来实现页面转场效果,通过PageTransitionEnter和PageTransitionExit指定页面进入和退出的动画效果,将其slide属性设置为SlideEffect.Bottom,则页面入场时从下边划入,出场时滑出到下边,即可实现上下切换效果。

28、自定义组件间如何实现从底部滑入滑出的效果

一个页面底部默认显示自定义组件A,点击自定义组件A,则A消失,自定义组件B从底部出现;点击自定义组件B,则组件B消失,A从底部出现。这个效果要如何实现?

可以使用transition产生组件转场动画,其参数type用来设置组件变化场景,包括新增和删除;参数translate用来设置转场时的平移效果。注意transition需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置。

29、子组件事件能否到传递父组件

ArkUI目前不支持事件传递链,可通过状态同步@Link或@Provide和@Consume进行父子组件间的状态通知,结合@Watch可以将状态变量的修改在组件间传递,实现类似的功能。

30、文档中提到键鼠事件可以设置冒泡阻断,其他事件是否支持

若对应事件对象Event下存在stopPropagation方法,就可以调用 event.stopPropagation()来阻塞事件冒泡。

更多详情查看:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-kit-V5

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值