重写TextView解决HorizontalScrollView中TextView显示不全的问题

/**
 * 适用于宽度相对确定的情况
 * Created by xieyuhai on 2017/9/13.
 */
public class MyTextView extends AppCompatTextView {

    private static final String TAG = "MyTextView";

    public MyTextView(Context context) {
        this(context, null);
    }

    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();

        Log.e(TAG, "onFinishInflate: w:" + getWidth() + "; height:" + getHeight());
    }


    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);


       float textWidth = getPaint().measureText(getText().toString());


        BigDecimal v1 = new BigDecimal(Double.toString(textWidth));
        BigDecimal v2 = new BigDecimal(Double.toString(w));

	//一行的高度*总行数+上下内边距= 控件的高度             避免死循环,保留两位小数,考虑到精度可能会丢失,在后面加1
        BigDecimal lineCount = v1.divide(v2, 2, BigDecimal.ROUND_HALF_EVEN).add(new BigDecimal(1));


        Paint.FontMetrics fm = getPaint().getFontMetrics();
        double v = Math.ceil(fm.descent - fm.ascent);//

	//一行的高度*总行数+上下内边距= 控件的高度
setHeight((int) (v * lineCount.doubleValue()) + getPaddingTop() + getPaddingBottom());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值