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()); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!