取决于TextView
宽度,我希望将textSize
设置得尽可能大,以使其不超过限制。
我的代码中的问题是,calcul似乎不正确,因为文本太大了。
我用Gimp测量了标签宽度(在屏幕截图上),变量textWidthToFit
是正确的(在我的情况下是298px)
这里我的代码(我的班级覆盖TextView
):
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
if (stretchable)
{
resizeText();
}
super.onSizeChanged(w, h, oldw, oldh);
}
private void resizeText()
{
if (stretchable && (getText().length() > 0))
{
float textWidth=0;
setTextSize(maxTextSize);
float newTextSize=getPaint().getTextSize();
int textWidthToFit = getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
TextPaint paint = new TextPaint(getPaint());
String text = getText().toString();
boolean sizeFound = false;
while (!sizeFound)
{
newTextSize -= 0.5f;
paint.setTextSize(newTextSize);
textWidth = paint.measureText(text);
if (textWidth < textWidthToFit || newTextSize < 5)
{
sizeFound = true;
}
}
setTextSize(newTextSize);
}
}
感谢。