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 的用法,请百度

本文介绍如何通过自定义XML文件来改变Android中EditText组件的光标样式和下划线颜色,包括设置光标颜色、宽度及不同状态下的下划线颜色与粗细。
797

被折叠的 条评论
为什么被折叠?



