实现EditText选中时底边框改变颜色

原创 2016年08月30日 15:46:02

(一)使用9Patch图片

XML布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RelativeLayout
                android:id="@+id/domainLayout"
                android:layout_width="match_parent"
                android:layout_height="50dip"
                android:orientation="horizontal"
                android:layout_gravity="center"
                >
        <TextView android:layout_width="70dip"
            android:layout_height="match_parent"
            style="@style/text_s28_1c1c1c"
            android:gravity="right|center"
            android:text="用户名:"/>
        <com.ziniu.mobile.module.ui.component.ZiniuEdit
            android:id="@+id/domain"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="75dip"
            android:paddingRight="5dip"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            //文本框为空时提示文字颜色
            android:textColorHint="@color/wechat_text_gray"
            //文本框样式
            style="@style/text_s28_1c1c1c"
            //文本框为空时提示文字
            android:hint="请输入用户名"
            //文本框背景状态
            android:background="@drawable/line_et_bg"
            //加载文本框右端删除图标
            android:drawableRight="@drawable/edit_clear_48"
            //设置光标的颜色为@null,表示光标的颜色和输入框的字体颜色相同
            android:textCursorDrawable="@null"/> 

    <RelativeLayout
                android:id="@+id/domainLayout"
                android:layout_width="match_parent"
                android:layout_height="50dip"
                android:orientation="horizontal"
                android:layout_gravity="center"
                >
        <TextView android:layout_width="70dip"
            android:layout_height="match_parent"
            style="@style/text_s28_1c1c1c"
            android:gravity="right|center"
            android:text="用户名:"/>
        <com.ziniu.mobile.module.ui.component.ZiniuEdit
            android:id="@+id/domain"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="75dip"
            android:paddingRight="5dip"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            //文本框为空时提示文字颜色
            android:textColorHint="@color/wechat_text_gray"
            //文本框样式
            style="@style/text_s28_1c1c1c"
            //文本框为空时提示文字
            android:hint="请输密码"
            //文本框背景
            android:background="@drawable/line_et_bg"
            //加载文本框右端删除图标
            android:drawableRight="@drawable/edit_clear_48"
            //设置光标的颜色为@null,表示光标的颜色和输入框的字体颜色相同
            android:textCursorDrawable="@null"/>          

    </RelativeLayout>

</RelativeLayout>
/drawable/line_et_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    //state_pressed:当控件被按下时触发相应的9Patch图片
    <item android:drawable="@drawable/textfield_activated_holo_dark" android:state_pressed= "true"/>  
    //state_focused:当控件获取焦点时
    <item android:drawable="@drawable/textfield_activated_holo_dark" android:state_focused= "true"/>  
    //state_selected:当控件被选择触发时
    <item android:drawable="@drawable/textfield_activated_holo_dark" android:state_selected= "true"/>  
    //没有选中时的状态
    <item android:drawable="@drawable/textfield_default_holo_light" />
</selector>

(二)使用样式

XML布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.bignerdranch.android.edittexttest.MainActivity">

    <EditText
        android:id="@+id/login_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/line_et_bg"
        android:hint="请输入用户名"/>
    <EditText
        android:layout_below="@id/login_account"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/line_et_bg"
        android:hint="请输入密码"/>
</RelativeLayout>
/drawable/line_et_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    //当控件被选中时触发相应的样式
    <itemandroid:state_focused="true" android:drawable="@drawable/line_et_focus"/>
    //当控件没有被选中时触发相应的样式
    <item android:drawable="@drawable/line_et_normal"/>
</selector>
样式文件line_et_focus.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- layer-list:将多个图片或两种效果按照顺序层叠起来显示,一个item包含一个显示元素 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <!--  shape自定义控件,android:shape="rectangle"形状为矩形 -->
        <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:描边,EditText只有底边 -->
            <stroke
                //边框宽度为1dip
                android:width="1dip"
                android:color="@color/colorAccent"
                android:dashGap="0dp"
                android:dashWidth="0dip" />
        </shape>
    </item>
</layer-list>
样式文件line_et_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<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>

参考: EditText状态变化——选中和未先中(底部变颜色的线)

相关文章推荐

EditText使用Selector设置选中与边框颜色

Android EditText 改变边框颜色

为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这么做了)...
  • wyyl1
  • wyyl1
  • 2015年07月10日 15:01
  • 535

改变EditText边框颜色

EditText中属性比较多,本节学习通过修改android:background属性的值实现EditText边框的去除与修改。 1、去除边框(将背景设为透明即可):android:...

Android开发全程记录(十三)——EditText自定义边框颜色

在开发中我们常常会根据项目的整体样式调整EditText的边框颜色,选中和未选中颜色。 首先定义两个...

EditText边框设置,获得焦点颜色变深,失去变浅

原文地址:http://blog.csdn.net/jamesliulyc/article/details/6709216 第一步:为了更好的比较,准备两个一模一样的EditText(当Acti...
  • sam_jet
  • sam_jet
  • 2015年05月13日 17:29
  • 767

EditText之边框颜色

EditText的自带属性里没有设置边框颜色的 有俩种方式可以达到效果 一种是网上比较推崇的用图作背景,另一种则是自绘 图作背景的:   首先重新定义一个style。在valu...

EditText之自定义边框颜色

EditText之自定义边框颜色 有俩种方式可以达到效果 一种是网上比较推崇的用图作背景,另一种则是自绘 图作背景的:   首先重新定义一个style。在values文件夹下新...

改变 Android EditText 的边框

1.创建一个自己的 EditText Widget,代码如下: package com.treasure.note.control; import android.content.Context;...
  • lyb2518
  • lyb2518
  • 2012年04月26日 19:42
  • 4014

android EditText输入框获得焦点时,边框变为深色

第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现EditText选中时底边框改变颜色
举报原因:
原因补充:

(最多只允许输入30个字)