【发布时间】:2015-03-15 04:16:07
【问题描述】:
也许我没有输入正确的关键字,但我没有找到答案。我想知道如果我用某个字符串设置 TextView 的尺寸是多少。但是,我想在活动中安排好所有内容之前了解一下。
我的 TextView 具有固定宽度和可变高度。我可以得到这样的高度:
myTextView.setText(myString);
// ... UI gets laid out ...
myTextView.getHeight()
如果高度超过某个点,我想更改 TextView 的宽度。 (但不是在那之前。)而不是等到 UI 布局之后,我想事先知道如果它有 myString 的高度是多少,然后在需要时更改宽度。
我查看了Layout 课程,但不知道该怎么做。我想知道它是否可能与覆盖 TextView 的 onMeasure 有关,但我真的不知道如何尝试。任何帮助表示赞赏。
更新
感谢@user3249477 和@0xDEADC0DE 的回答。我将@user3249477 的答案标记为现在的解决方案(尽管由于我需要多次调整视图大小,所以我不确定是否要反复打开和关闭可见性),但也给@0xDEADC0DE +1 以提供我需要的关键字进一步研究这个问题。
我需要对此进行更多的研究和测试。以下是迄今为止我发现有用的一些链接:
OnLayoutChangeListener:
- View.OnLayoutChangeListener
- Capture Layout resize before API 11
- After changing a property on a LayoutParams object, do I need to call setLayoutParams again?
measureText() 和 getTextBounds():
- Android Paint: .measureText() vs .getTextBounds()
- Paint.getTextBounds() returns to big height
- Gettextbounds in android
覆盖父视图的 onSizeChanged 看起来也很有趣:https://stackoverflow.com/a/14399163/3681880
【问题讨论】:
-
我现在会使用
StaticLayout来解决这个问题。见this answer。