HarmonyOS 鸿蒙Next 如何在Text组件中获取某个文字相对Text组件的位置和大小?

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

HarmonyOS 鸿蒙Next 如何在Text组件中获取某个文字相对Text组件的位置和大小?

求助大佬们,我现在想要实现这样的效果:在某个文字的下面(bottom or baseline)绘制图形,前提是需要获取到这个文字的位置。有什么api能查询到相关信息吗?或者非Text组件也可以,只要能实现就行。

举例如下图:在这段文本中,找到《下面(bottom or》并且在底部绘制一条直线

cke_1258.jpeg

7 回复
Text() {
        Span("hello")
        Span("world")
      }

可以试试获取Span的位置

不行,没法获取span的位置,span不支持通用属性

好像还真没什么好的方法获取子组件位置

试试 onAreaChange中的 currentArea.position.x/y

参考:https://developer.huawei.com/consumer/cn/blog/topic/03156019051328009

拜读了文章,onAreaChange没办法实现我想要的功能,可能我的描述不够清晰,我会再补充描述下,非常感谢

你现在有什么好的方案吗,我也需要实现类似的功能

在HarmonyOS鸿蒙Next中,若要在Text组件中获取某个文字相对于Text组件的位置和大小,通常可以通过以下步骤实现:

  1. 使用TextLayout:首先,需要获取Text组件的TextLayout对象。TextLayout提供了对文本布局信息的访问,包括文本中每个字符的位置和大小。

  2. 遍历TextLayout:通过遍历TextLayout中的字符信息,可以找到目标文字所在的字符位置。利用TextLayout的API,如getCharacterBounds等,可以获取该字符的边界信息,从而得到其位置和大小。

  3. 转换坐标:由于TextLayout返回的坐标是相对于文本布局本身的,可能还需要将其转换为相对于Text组件的坐标。这通常涉及到一些简单的坐标变换。

  4. 注意事项:需要注意文本的换行、字体大小、行高等因素,这些都可能影响最终的位置和大小计算。

通过上述步骤,你应该能够在HarmonyOS鸿蒙Next的Text组件中获取某个文字相对于Text组件的位置和大小。不过,由于具体实现可能因版本和API的更新而有所变化,建议查阅最新的HarmonyOS开发文档以获取最准确的信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部