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

1、如何获取底部手势横条的高度

可以使用window的getWindowAvoidArea()方法获取内容规避区域,需设置type为AvoidAreaType.TYPE_NAVIGATION_INDICATOR。

2、如何实现列表既可以左右滑、又可以上下滑动

List+Scroll+gesture,List实现竖向滚动及吸顶,Scroll+gesture实现横向滚动。

3、如何使用Swiper组件实现下拉刷新

可以利用Refresh组件实现下拉刷新效果。

4、getContext传入this和不传入有什么区别
  • getContext参数及类型:getContext(component?: Object):Context。

  • Context传入参数component的作用是指定一个组件对象,getContext函数会返回这个组件的上下文对象Context。如果不传入参数,则默认返回当前组件的上下文对象。上下文对象Context包含了组件的状态、属性、方法等信息,可以在组件内部使用。

  • 在某些场景下,可能需要在组件内部调用其他组件的方法或获取其他组件的属性,此时可以通过getContext(this)获取到当前组件的上下文对象,然后使用该上下文对象调用其他组件的方法或获取其他组件的属性。

5、ArkUI是否支持自定义装饰器

ArkUI可以自定义装饰器,示例代码中@decorateKlass为自定义类装饰器,@MyDescriptor为自定义方法装饰器。

6、如何实现匿名内部类

ArkTS不支持匿名类,建议使用嵌套类实现。因为使用匿名类创建的对象类型未知,这与ArkTS不支持structural typing和对象字面量的类型冲突。

7、如何定义一个未知类型的对象

可使用Record类型,有几个变量就对应几个类型参数。

8、为什么@observe修饰的对象变化后,UI没有刷新

因为@Observed装饰器可以观察到嵌套对象的属性变化,其他装饰器仅能观察到第二层的变化。需要将具有观测能力的类对象绑定组件,来确保当改变这些类对象的内容时,UI能够正常的刷新(New一个继承了Array的对象而不是自定义数组)。具体参考如下链接,里面列举了几种失效场景,并提供了正确的写法。

9、复用组件reuseId作用是什么

可以使用reuseId为复用组件分配复用组,相同reuseId的组件会在同一个复用组中复用。在复用的条件下,如果添加了reuseId,相同reuseId的组件才能复用,不设置时相当于拿复用组件的名字作为reuseId。

10、使用lazyforeach时候滑动列表产生大量aboutToBedeleted的函数调用,如何减少?

可以使用@Reusable修饰自定义组件减少aboutToBeDeleted的调用。

11、为什么px2vp返回的结果不正确

px2vp是ArkUI的接口,初始化ArkUI之前,这个转化比例是1,windowStage.loadContent是初始化ArkUI,只有当初始化完成后,px2vp才会根据设备得到具体的值。在windowStage.loadContent完成后再调用px2vp即可。

12、是否navigation有最大页面数量限制?router栈的栈最大是32个,超过32个是无响应还是报错?

navigation暂无最大页面数量限制。router栈超过32个无响应,不会再有新页面入栈。

13、是否router.pushUrl无法使用Map类型参数

router是无法传递map类型的数据的,params中只能包含基础类型的数据,推荐使用Navigation进行复杂数据类型的传参。

14、如何使用Navigation的navPathStack参数

通过getParamByIndex获取index指定的NavDestination页面的参数信息,通过getParamByName获取全部名为name的NavDestination页面的参数信息。具体代码参考如下链接。

15、Navigation中pushPathByName与pushDestinationByName的区别
  • pushDestinationByName绑定了上下文对象,调用时会验证上下文是否一致,pushPathByName则不会验证。

  • 不同的window,运行的UIContext不一样,在一个window下使用时,除了返回值不一样,没有其它区别。

16、如何实现点击输入框时会拉起软键盘,点击Button时软键盘关闭

可以通过输入法服务@ohos.inputMethod的stopInputSession方法来隐藏软键盘。

17、如何实现文本展开收起功能

可以通过动态改变Text的maxLines属性来实现。

18、List的下拉加载如何回滚到当前展示位置

List组件下拉加载头顶元素,希望加载完之后,还是定位在刷新前的元素上面。

可以给List添加scroller控制器,将列表跳回原先所在位置this.scroller.scrollToIndex。

更多详情查看:文档中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值