去除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; } }