TextView去掉自身自带的内边距

本文介绍了一个自定义的TextView组件,该组件通过调整画布的位置来消除当使用较大的sp值显示文本时出现的内边距问题。通过设置属性`adjustTopForAscent`,可以控制是否移除文本上方的额外间距。

当输入sp比较大的文字或者数字的时候,文本或者数字周边会出现内边距的问题.

public class MyTextView extends TextView {
private boolean adjustTopForAscent = true;

public MyTextView(Context context) {
    super(context);
}

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

public MyTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

Paint.FontMetricsInt fontMetricsInt;

@Override
protected void onDraw(Canvas canvas) {
    if (adjustTopForAscent) {//设置是否remove间距,true为remove
        if (fontMetricsInt == null) {
            fontMetricsInt = new Paint.FontMetricsInt();
            getPaint().getFontMetricsInt(fontMetricsInt);
        }
        canvas.translate(0, fontMetricsInt.top - fontMetricsInt.ascent);
    }
    super.onDraw(canvas);
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值