【发布时间】:2012-08-16 23:21:30
【问题描述】:
我正在尝试设置一个包含两行文本的 TextView,第二行比第一行短。
有没有办法设置 TextView 的 Layout 实例(通过 TextView.getLayout() 获取)来截断第二行,或者还有其他我不知道的方法?
编辑 1
我的意图被误解了:我试图设置一个布局的文本视图,我可以设置任意文本,并且根据长度会发生以下情况: 如果文本足够长以开始第二行,则使第一行与 textview 的内容宽度一样宽,但第二行应该更短,例如宽度的一半。但如果文本足够长,应该有第二行。
我检查了抽象类布局和它的子类,有一个函数
public int getLineEnd(int line)
返回一行最后一个字符的位置。一种方法是设置文本,然后检查第二行的布局宽度,然后将文本更改为较短的版本。无论如何,这似乎是一种 hacky 方式,如果我可以自己设置一个 Layout 实例(通过 setter 方法,例如 getter
TextView.getLayout().
有没有人将自定义布局设置为 Textview 的子类?
EDIT 2 / 我自己的解决方案
找到了解决办法: 现在我正在检查第二行是否与导致第二行变短的区域重叠。如果是这样,我将截断文本。 我使用的函数:
TextView.getLineCount()
TextView.getLayout().getLineStart(int line)
TextView.getLayout().getLineEnd(int line)
TextView.getPaint().measureText()
也许这对未来的任何人都有帮助。
不过,如何设置自己的布局的问题仍未得到解答。
【问题讨论】:
-
你试过setEllipsize