更改EditText光标高度

时间:2021-01-24 08:57:17

在做项目是发现如果指定了EditText的lineSpacingMultiplier 或者 lineSpacingExtra属性调整行间距,则光标会变得很大,十分的难看.

于是在网上搜,找到了解决方法.

http://*.com/questions/11641997/how-to-change-edittext-cursor-height

这个方法只在API 12以后才能够使用.

具体来说

是给EditText指定android:textCursorDrawable属性


如下

<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/cursor_red" />

而cursor_red是一个 shape drawable

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:width="2dip" /> <solid android:color="@color/red" /> <padding android:top="2sp" android:bottom="-11sp" /> </shape>

通过width来指定光标的宽度

通过top属性来使光标顶部 向上移动距离

通过bottom属性来使光标底部 向下移动距离 (所以指定负数就是使光标底部向上挪了)


附上源码片段增加理解

Editor.java

private void updateCursorPosition(int cursorIndex, int top, int bottom, float horizontal) { ... mCursorDrawable[cursorIndex].getPadding(mTempRect); ... mCursorDrawable[cursorIndex].setBounds(left, top - mTempRect.top, left + width, bottom + mTempRect.bottom); }