我有一个基于 a 的按钮类LinearLayout
,其中包含两个TextView
s,并且我希望按钮始终是方形的(我正在使用onMeasure()
),并且TextView
s 的上部自动调整大小以适应按钮。我希望下部TextView
有固定大小的文本,所以它看起来大致像
|---------|
| |
| 1 8 0 |
| |
| foo |
|---------|
“180”在可用空间中尽可能大。
我正在调用一个onLayout()
函数adjustTextSize()
:
private void adjustTextSize() {
float height = mHeight - mTitleView.getMeasuredHeight() - 4 * mPadding - getPaddingTop() - getPaddingBottom(); //title text view
int numberheight = (int) (height * 0.75);
int extravertpadding = 0;//(int) (height * 0.125);
mTitleView.setPadding(mPadding, 0, mPadding, mPadding);
mNumberView.setTextSize(TypedValue.COMPLEX_UNIT_PX, numberheight);
mNumberView.setPadding(mPadding, mPadding + extravertpadding, mPadding, mPadding + extravertpadding);
if(mNumberView.getMeasuredWidth() > mWidth) {
float reduction = mWidth / mNumberView.getMeasuredWidth();
extravertpadding = (int) ((numberheight - height*reduction) / 2);
numberheight = (int) (height*reduction);
mNumberView.setTextSize(TypedValue.COMPLEX_UNIT_PX, numberheight);
mNumberView.setPadding(mPadding, mPadding + extravertpadding, mPadding, mPadding + extravertpadding);
}
mNumberView.setTextSize(TypedValue.COMPLEX_UNIT_PX, numberheight);
mNumberView.setPadding(mPadding, mPadding + extravertpadding, mPadding, mPadding + extravertpadding);
}
mWidth
并mHeight
设置在onLayout()
.
但是,我有两个初始问题:首先,将文本大小设置为某个像素值会使该像素值View
略大于像素值。我想计算出将文本高度设置为多大以适合可用空间;四分之三似乎可以,但我宁愿有一个确切的值。
第二个问题是,getMeasuredWidth()
在我更改了文本大小之后, 的值似乎没有改变。为什么不?