public classAutoFitTextViewextendsTextView {
privatePaintmTextPaint;
private floatmTextSize;
publicAutoFitTextView(Context context) {
super(context);
}
publicAutoFitTextView(Context context,AttributeSet attrs) {
super(context,attrs);
}
@Override
protected voidonDraw(Canvas canvas) {
super.onDraw(canvas);
refitText(this.getText().toString(), this.getWidth());
}
private voidrefitText(String text, inttextViewWidth) {
if(text ==null|| textViewWidth <=0)
return;
mTextPaint=newPaint();
mTextPaint.set(this.getPaint());
intavailableTextViewWidth = getWidth() - getPaddingLeft() - getPaddingRight();
float[] charsWidthArr =new float[text.length()];
Rect boundsRect =newRect();
mTextPaint.getTextBounds(text,0,text.length(),boundsRect);
inttextWidth = boundsRect.width();
mTextSize= getTextSize();
while(textWidth > availableTextViewWidth) {
mTextSize-=1;
mTextPaint.setTextSize(mTextSize);
textWidth =mTextPaint.getTextWidths(text,charsWidthArr);
}
this.setTextSize(TypedValue.COMPLEX_UNIT_PX,mTextSize);
}
}
网友评论