问题
改变文本的行间距需要给 EditText
设置 lineSpacingExtra
和 lineSpacingMultiplier
这个时候的 EditText
的光标高度就会变得很难看.
解决办法
自定义 cursorDrawable
然后设置 padding
值
原理
EditText
在更新光标的视图的时候检查了光标 drawable 的 padding. 计算光标高度会算上相应的值.
相关源码:
Editor.java
private void updateCursorPosition(int cursorIndex, int top, int bottom, float horizontal) {
// ...
if (mTempRect == null) mTempRect = new Rect();
mCursorDrawable[cursorIndex].getPadding(mTempRect); //光标的 padding
// ...
// 上下边距的最终值为 top - mTempRect.top 和 bottom + mTempRect.bottom
mCur