更改EditText光标高度

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

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

http://stackoverflow.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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值