Android 自定义TextView实现文本内容自动调整字体大小
最近做通讯录小屏机联系人姓名显示--长度超过边界字体变小
/**
*自定义TextView,文本内容自动调整字体大小以适应TextView的大小
*@authoryzp
*/
publicclassAutoFitTextViewextendsTextView{
privatePaintmTextPaint;
privatefloatmTextSize;
publicAutoFitTextView(Contextcontext){
super(context);
}
publicAutoFitTextView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
/**
*Resizethefontsothespecifiedtextfitsinthetextboxassumingthe
*textboxisthespecifiedwidth.
*
*@paramtext
*@paramtextWidth
*/
privatevoidrefitText(Stringtext,inttextViewWidth){
if(text==null||textViewWidth<=0)
return;
mTextPaint=newPaint();
mTextPaint.set(this.getPaint());
intavailableTextViewWidth=getWidth()-getPaddingLeft()-getPaddingRight();
float[]charsWidthArr=newfloat[text.length()];
RectboundsRect=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);
}
@Override
protectedvoidonDraw(Canvascanvas){
super.onDraw(canvas);
refitText(this.getText().toString(),this.getWidth());
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!