HarmonyOS 鸿蒙Next:对于自适应的组件,需要在动态获取到组件的宽高。

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:对于自适应的组件,需要在动态获取到组件的宽高。

对于自适应的组件,需要在动态获取到组件的宽高。

4 回复

onAreaChange事件指组件显示的尺寸、位置等发生变化时触发的事件,当组件初次渲染或后续发生变化时都可监听到,参数newValue中有组件宽高等值,具体使用方法请参考文档。

文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V1/ts-universal-component-area-change-event-0000001630146297-V1#ZH-CN_TOPIC_0000001666708004__%E7%A4%BA%E4%BE%8B

说句实话,问题是提出来了,但是说的解决确不是解决的办法。

这个自适应就需要系统去支持吧,还需要自己去算?

如果需要自己算,那这个还是一个问题吗?

所有的控件都自己计算绘制,需要那么基础组件干嘛,所有的都自己做了呀。一个可以算,两个可以算,一百两百甚至更多呢?

不要提出这样没有用的解决方式呀,有这个时间推动系统实现不好吗?

HarmonyOS的开发者模式提供了很多实用的工具,方便我们进行调试和优化。

在HarmonyOS鸿蒙Next系统中,针对自适应组件动态获取宽高的需求,可以通过以下方式实现:

  1. 布局测量回调:利用组件的onMeasure方法,在组件进行测量时获取其宽高。这个方法会传递一个MeasureSpec参数,通过解析这个参数,可以计算出组件期望的宽度和高度。

  2. ViewTreeObserver监听:通过ViewTreeObserverOnPreDrawListenerOnGlobalLayoutListener接口,可以在布局完成前或布局完成后获取组件的宽高。这种方式适用于需要在布局完全确定后再获取宽高的场景。

  3. 自定义组件:如果上述方法不适用,可以考虑自定义组件,在组件内部重写相关方法,如onSizeChanged,该方法会在组件大小发生变化时被调用,可以直接获取到最新的宽高信息。

  4. 使用布局参数:在某些情况下,可以通过获取组件的布局参数(如LayoutParams)来间接获取宽高,但这种方式依赖于布局参数的准确性,可能不适用于所有情况。

请根据你的具体需求选择合适的方法。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部