zoukankan      html  css  js  c++  java
  • 去除TextView设置lineSpacingExtra后,最后一行多出的空白

    转载请标明出处:https://www.cnblogs.com/tangZH/p/11985745.html

    更多精彩文章:http://77blogs.com/?p=278

    有些手机中,给TextView设置lineSpacingExtra后会出现最后一行的文字也出现lineSpacingExtra,不是某些版本才会,这跟机型有关。

    可以用下面这种方法解决:

    public class LastLineNoSpaceTextView extends AppCompatTextView {
        private Rect mRect;
    
        public LastLineNoSpaceTextView(Context context) {
            super(context);
            init();
        }
    
        public LastLineNoSpaceTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public LastLineNoSpaceTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init();
        }
    
        private void init() {
            mRect = new Rect();
        }
    
        protected void onMeasure(int i, int i2) {
            super.onMeasure(i, i2);
            int measuredHeight = getMeasuredHeight() - getLastLineSpace();
            setMeasuredDimension(getMeasuredWidth(), measuredHeight);
        }
    
        public int getLastLineSpace() {
            int lastLineIndex = getLineCount() - 1;
            if (lastLineIndex < 0) {
                return 0;
            }
            Layout layout = getLayout();
            int baseline = getLineBounds(lastLineIndex, mRect);
            if (getMeasuredHeight() - getPaddingTop() - getPaddingBottom() != layout.getHeight()) {
                return 0;
            }
            int fontHeight = baseline + layout.getPaint().getFontMetricsInt().descent;
            int lineHeight = mRect.bottom;
            return lineHeight - fontHeight;
        }
    }
  • 相关阅读:
    离线下载使用Google商店插件crx
    springboot thymeleaf 引入js
    如何保证系统重启,tomcat自动重启
    如何实现财务自由
    理财之道
    九大职场定律
    算法系列二:如何学习算法
    FastDFS结合Flask使用
    系统权限的实现
    正则表达式
  • 原文地址:https://www.cnblogs.com/tangZH/p/11985745.html
Copyright © 2011-2022 走看看