前言
- 如下图,实现了一个类似
TextInputLayout
的效果,当然还是有点差异。更高版本的EditText已经默认是这样的效果了,只是不能改变颜色。EditText背景设置很简单,使用android:background=""
属性即可,本文介绍的是使用selector实现EditText背景自定义转换的效果。
代码
- 比较简单,直接上代码啦,主要是用了一个
selector -> layer-list -> shape
,在select
属性改变时,改变线条的颜色。原本是一个矩形,然后将另外三个边偏移一下,只留下底边,达到线条显示的效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dip"
android:right="-2dip"
android:top="-2dip">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dip"
android:color="@color/red"
android:dashGap="0dp"
android:dashWidth="0dip" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dip"
android:right="-2dip"
android:top="-2dip">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dip"
android:color="@color/colorPrimary"
android:dashGap="0dp"
android:dashWidth="0dip" />
</shape>
</item>
</layer-list>
</item>
</selector>