首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

textview中文字实用其大小

2012-09-25 
textview中文字适用其大小import android.content.Context?import android.graphics.Paint?import andro

textview中文字适用其大小

import android.content.Context;?
import android.graphics.Paint;?
import android.util.AttributeSet;?
import android.widget.TextView;?
?
public class FontFitTextView extends TextView {?
?
? ? public FontFitTextView(Context context) {?
? ? ? ? super(context);?
? ? ? ? initialise();?
? ? }?
?
? ? public FontFitTextView(Context context, AttributeSet attrs) {?
? ? ? ? super(context, attrs);?
? ? ? ? initialise();?
? ? }?
?
? ? private void initialise() {?
? ? ? ? testPaint = new Paint();?
? ? ? ? testPaint.set(this.getPaint());?
? ? ? ? //max size defaults to the intially specified text size unless it is too small?
? ? ? ? maxTextSize = this.getTextSize();?
? ? ? ? if (maxTextSize < 11) {?
? ? ? ? ? ? maxTextSize = 20;?
? ? ? ? }?
? ? ? ? minTextSize = 10;?
? ? }?
?
? ? /* Re size the font so the specified text fits in the text box?
? ? ?* assuming the text box is the specified width.?
? ? ?*/?
? ? private void refitText(String text, int textWidth) { ?
? ? ? ? if (textWidth > 0) {?
? ? ? ? ? ? int availableWidth = textWidth - this.getPaddingLeft() - this.getPaddingRight();?
? ? ? ? ? ? float trySize = maxTextSize;?
?
? ? ? ? ? ? testPaint.setTextSize(trySize);?
? ? ? ? ? ? while ((trySize > minTextSize) && (testPaint.measureText(text) > availableWidth)) {?
? ? ? ? ? ? ? ? trySize -= 1;?
? ? ? ? ? ? ? ? if (trySize <= minTextSize) {?
? ? ? ? ? ? ? ? ? ? trySize = minTextSize;?
? ? ? ? ? ? ? ? ? ? break;?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? testPaint.setTextSize(trySize);?
? ? ? ? ? ? }?
?
? ? ? ? ? ? this.setTextSize(trySize);?
? ? ? ? }?
? ? }?
?
? ? @Override?
? ? protected void onTextChanged(final CharSequence text, final int start, final int before, final int after) {?
? ? ? ? refitText(text.toString(), this.getWidth());?
? ? }?
?
? ? @Override?
? ? protected void onSizeChanged (int w, int h, int oldw, int oldh) {?
? ? ? ? if (w != oldw) {?
? ? ? ? ? ? refitText(this.getText().toString(), w);?
? ? ? ? }?
? ? }?
?
? ? //Getters and Setters?
? ? public float getMinTextSize() {?
? ? ? ? return minTextSize;?
? ? }?
?
? ? public void setMinTextSize(int minTextSize) {?
? ? ? ? this.minTextSize = minTextSize;?
? ? }?
?
? ? public float getMaxTextSize() {?
? ? ? ? return maxTextSize;?
? ? }?
?
? ? public void setMaxTextSize(int minTextSize) {?
? ? ? ? this.maxTextSize = minTextSize;?
? ? }?
?
? ? //Attributes?
? ? private Paint testPaint;?
? ? private float minTextSize;?
? ? private float maxTextSize;?
?
}?

热点排行