LinearLayout
2 つの を含むa に基づくボタン クラスがありTextView
、ボタンを常に正方形にして ( を使用していますonMeasure()
)、TextView
s の上部をボタンに合わせて自動的にサイズ変更します。下部に固定サイズのテキストを持たせたいTextView
ので、おおよそ次のようになります
|---------|
| |
| 1 8 0 |
| |
| foo |
|---------|
「180」は、使用可能なスペースで可能な限り大きくなります。
私はonLayout()
calledで関数を呼び出しています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()
ます。
ただし、最初に 2 つの問題があります。まず、テキスト サイズを特定のピクセル値に設定すると、ピクセル値よりもView
若干大きくなります。使用可能なスペースに合わせてテキストの高さを設定する大きさを計算したいと思います。4 分の 3 は問題ないようですが、正確な値が必要です。
2 番目の問題はgetMeasuredWidth()
、テキスト サイズを変更した後、 の値が変化していないように見えることです。なぜだめですか?