自动调节字体大小的TextView
今天项目中遇见一个需求,在此记录。
需求描述:TextView中text过长的时候,优先缩小字体,如果缩小字体依旧过长,再换行。
Google原生自动缩放是以高度作为标准的,只有高度不够时才会进行缩放。与我们需要以宽度为标准不同,故自定义View
自定义TextView代码如下:
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.TextView;
public class AutoTextView extends TextView {
private float mTextSize;
private float mMinSize;
private float mSizeStep;
private StaticLayout mStaticLayout;
private TextPaint mTextPaint;
public AutoTextView(Context context) {
this(context, null);
}
public AutoTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public AutoTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialise(context, attrs, defStyleAttr);
}