Android 动态改变TextView字体大小

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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值