package view.myview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import control.other.PxDpSp;
/**
* @类名:ChangedSizeTextView
* @功能描述:动态改变字体大小:根据控件的大小,自动改变字体大小,保证部分字体不会无法显示
* @作者:XuanKe'Huang
* @时间:2014-10-22 下午8:39:15
* @Copyright 2014
*/
public class ChangedSizeTextView extends TextView {
public ChangedSizeTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public ChangedSizeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public ChangedSizeTextView(Context context) {
super(context);
init(context);
}
/**
* 方法名: init
*
* 功能描述:初始化
*
* @param context
* 上下文对象
* @return void
*
* </br>throws
*/
private void init(Context context) {
this.context = context;
}
private Context context;
/**
* 方法名: changedSize
*
* 功能描述:动态改变字体大小
*
* @return void
*
* </br>throws
*/
private void changedSize() {
if (this.getText().toString().length() >= 10) {// 如果字数大于10,则设置为单行
this.setSingleLine();
return;
}
int textPx = PxDpSp.sp2px(context, this.getTextSize());// 得到字体的大小
if (textPx > this.getWidth()) {// 判断字体的大小是否超过控件的大小
this.setTextSize(PxDpSp.px2sp(context, this.getWidth() - 20));// 如果超过,则根据控件的大小设置字体的大小
}
if (textPx > this.getHeight()) {
this.setTextSize(PxDpSp.px2sp(context, this.getHeight() - 20));// 如果超过,则根据控件的大小设置字体的大小
}
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text, type);
changedSize();
}
}
Android 动态改变TextView字体大小
最新推荐文章于 2021-05-25 21:10:44 发布