原理参考: https://blog.youkuaiyun.com/harvic880925/article/details/50423762
通过自定义控件删除上下内边距, UI走查时就不用担心间距不对了。
代码:
/**
* 数字、字母、汉字的上下边界计算方式不同, 因为setText是final方法。
* 建议只显示一种类型的文本, 例如这个TextView只显示汉字、字母或数字。 不要来回切换
*/
public class MyTextView extends TextView {
//根据当前文本、字号计算出的高度
private int retHeight = 0;
//原始高度
private int originHeight = 0;
private String lastText = null;
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setGravity(getGravity() | Gravity.CENTER_VERTICAL);
setIncludeFontPadding(false);
}
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override protected void onDraw(Canvas canvas) {
Paint