Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在onLayout期间调整Android UI元素的大小?_Android_Layout_View_Measure - Fatal编程技术网

如何在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)
);
告诉系统测量视图,就好像它的大小没有限制一样。调用此函数后,您可以了解如果空间不是对象,视图会有多大,并相应地将其缩小