在做项目是发现如果指定了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); }