1、如何设置子组件宽度使其不超过父组件的大小
可以使用尺寸设置中的calc计算属性,对子组件的宽度进行判断,来设置子组件宽度。
2、Image或者ImageSpan传入一个string类型的路径时无法加载图片
目前规格上只支持常量,需要把string提取出来用$r( )包裹。
3、Image组件如何读入沙箱内的图片
Image组件不能直接传入应用沙箱路径,需要传入应用沙箱uri。
-
参考fileuri模块示例代码获取文件的沙箱路径。
-
然后通过调用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实现页面跳转时,如何关闭页面间转场动效
-
参考页面间转场示例在当前页面和目标页面中定义pageTransition方法。
-
将页面入场组件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