检测Android的TextView插入换行符的位置

che*_*ica 6 android multiline textview

我有一个矩形瓷砖,我想在其中放入一个图像和一些文字.图像不得与文本重叠,图像和文本的大小可能不同.

该过程必须手工编码,因为我们必须根据客户的需求对其进行微调.

我尝试了首先使用getTextBounds()或测量渲染文本边界的方法measureText(),然后调整字体大小和图像大小,使它们不重叠.

如果文本只在一行上,这可以正常工作.

但是如果TextView将文本包装到多行,我无法预测文本边界,因为我不知道在哪里TextView插入自动换行符.

如何找出TextView插入自动换行符的文本中的位置?

示例:给出文本

Lorem ipsum dolor sit amet

将呈现为

| Lorem ipsum    |
| dolor sit amet |
Run Code Online (Sandbox Code Playgroud)

我需要一个可以转换的函数

Lorem ipsum dolor sit amet

Lorem ipsum \ndolor sit amet

Jim*_*Jim 6

TextView(布局对象)具有一些有用的功能,可用于您要完成的任务:

http://developer.android.com/reference/android/text/Layout.html

看一眼:

getLineCount()

getLineEnd(int line)

您可以根据字符在每个lineEnd的位置获取TextView字符串的子字符串.

您需要getViewTreeObserver()等待,直到可以调用TextView,然后才能调用它们并从中获取有用的信息.

或者,您可以构建一个自定义TextView,它可以通过内置方法或通过向其添加侦听器来提供数据.修改文本大小的自定义TextView示例如下:

android ellipsize multiline textview

我已经使用过它并进行了类似的修改(就像你想要做的那样).