如何在onLayout期间调整Android UI元素的大小?
我有一个基于如何在onLayout期间调整Android UI元素的大小?,android,layout,view,measure,Android,Layout,View,Measure,我有一个基于LinearLayout的button类,它包含两个TextViews,我希望按钮始终是方形的(我正在使用onMeasure()),并且TextView的上部自动调整大小以适应按钮。我希望较低的TextView具有固定大小的文本,因此它看起来大致像 |---------| | | | 1 8 0 | | | | foo | |---------| “180”在可用空间内尽可能大 我正在onLayout()中调用一个名为adjustText
LinearLayout
的button类,它包含两个TextView
s,我希望按钮始终是方形的(我正在使用onMeasure()
),并且TextView
的上部自动调整大小以适应按钮。我希望较低的TextView
具有固定大小的文本,因此它看起来大致像
|---------|
| |
| 1 8 0 |
| |
| foo |
|---------|
“180”在可用空间内尽可能大
我正在onLayout()
中调用一个名为adjustTextSize()
的函数:
mWidth
和mHeight
在onLayout()中设置
但是,我有两个初始问题:首先,将文本大小设置为某个像素值会使视图
略大于像素值。我想计算设置文本高度以适应可用空间的大小;四分之三似乎可以,但我更希望有一个准确的值
第二个问题是,getMeasuredWidth()
的值在我更改文本大小后似乎没有改变。为什么不呢?回答第2部分:
有必要打电话
mNumberView.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
);
告诉系统测量视图,就好像它的大小没有限制一样。调用此函数后,您可以了解如果空间不是对象,视图会有多大,并相应地将其缩小。回答第2部分:
有必要打电话
mNumberView.measure(
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
);
告诉系统测量视图,就好像它的大小没有限制一样。调用此函数后,您可以了解如果空间不是对象,视图会有多大,并相应地将其缩小