【问题标题】:Enclosing bounds of text in Android?在Android中封闭文本边界?
【发布时间】:2016-10-10 19:06:35
【问题描述】:

我需要限制宽度或高度的字符串的封闭边界的宽度和高度。找到了两种方法,但它们并不完全符合我的要求。

Paint.measureText().getTextBounds()

如何设置限制,即我不希望边界的宽度大于 300 像素?

在 iOS NSStringboundingRect 方法中计算这个,或者 sizeToFit

【问题讨论】:

  • 使用 Paint 时,您自己绘制文本。因此,您可以逐个字母或逐字绘制它,如果您的文本的 measureText + 下一个字母超过 300 像素,您就不要绘制它或切换行。
  • 我需要输入“\n”个字符吗?
  • 不,你不知道need to put in "\n" characters:阅读android.text.Layout
  • @pskink 我明白了,这就像iOS中的约束,是否可以将height参数设置为布局XML中的可变键组件 ?
  • 不,它以固定宽度布置输入文本:就像报纸上的一列 - 您只需传递文本和最大宽度,并将计算此布局的高度基于文本和最大宽度

标签: java android android-layout textview


【解决方案1】:

我认为你还没有完全理解 Paint.measureText 在做什么。
此方法仅使用 Paint 内部参数计算 文本宽度。 如果你想限制你的文本,例如椭圆形文本,你可以使用this thread

否则,Paint.getTextBounds 需要在 Rect 对象中,该方法将填充。但这里没有限制。

【讨论】:

  • ellipsize 将截断文本。如果已知文本、字体和字体大小,我需要计算固定宽度所需的高度。你知道如何在 Android 中做到这一点吗?
【解决方案2】:

找到here 的答案。需要View.MeasureSpec计算高度f宽度有限。

【讨论】:

  • @pskink 什么都没有,但是如果宽度有限,View.MeasureSpec 可以计算所需的高度
  • 所以可能你的问题是典型的XY Problem,你到底想达到什么目的?
  • @pskink 我认为我的问题非常具体。参考了两种绘画方法,以表明我努力寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多