テキストビュー内のテキストのサイズを変更して収まるようにカスタムビューに取り組んでいます(省略したくありません)。
私が抱えている問題は、テキストサイズを変更すると、テキストビュー自体が再測定されないことです。ソースを見てきましたが、 setTextSize() が次を呼び出していることがわかりました。
nullLayouts();
requestLayout();
invalidate();
だから、それは再測定したはずです。1.6、1.5、および 2.1 エミュレーターではなく、2.3 では正常に動作するため、これはバグである可能性があります。
これがコードの一部です。textview が拡張されていることに注意してください。
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if(w == 0 && h == 0) {
setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultSize);
}
updateView();
}
private void updateView() {
int viewWidth = getViewWidth();
float textWidth = getTextWidth();
float textSize = textSize();
while(textWidth > viewWidth && textSize >= MIN_TEXT_SIZE) {
setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize-1);
textSize = getTextSize();
textWidth = getTextWidth();
}
}
この問題を解決するための正しい方向へのヒントを誰かに教えてもらえますか?