EditText 有一个属性:android:textCursorDrawable
,它就是用来设置光标样式的。
我们可以在drawable资源文件夹下新建一个cursor_color.xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="2dp" />
<solid android:color="@android:color/holo_blue_light" />
</shape>
然后设置
<EditText
android:textCursorDrawable="@drawable/cursor_color"
接下来是下划线颜色,先定义一个Style
<style name="MyEditText" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@android:color/darker_gray</item>
<item name="colorControlActivated">@android:color/holo_orange_dark</item>
</style>
colorControlNormal
表示控件默认的颜色,
colorControlActivated
表示控件被激活时的颜色,这样,我们就可以分别设置EditText不被选中和选中时的颜色了。
然后在要改样式的Edt里添加一条 android:theme="@style/MyEditText" 就可以了
但是这样子选中状态的下划线粗线还是和未选中不一样,如果要控制粗线,可以自己写一个drawable文件,内容用layer-list和selector 来做,如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true">
<layer-list>
<item>
<shape>
<solid android:color="#cdcdcd"/>
</shape>
</item>
<item android:bottom="2dp">
<shape>
<solid android:color="@color/white"/>
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item>
<shape>
<solid android:color="#cdcdcd"/>
</shape>
</item>
<item android:bottom="1dp">
<shape>
<solid android:color="@color/white"/>
</shape>
</item>
</layer-list>
</item>
</selector>
这样用layer-list ,就可以控制下划线的颜色和粗细,具体layer-list 的用法,请百度