EditText自定义边框背景与动态检测用户输入

一、EditText自定义边框背景

1.效果演示

2.代码实现

(1)res/drawable/shape_edit_normal.xml

功能:编辑框没获得焦点时,使用该shape。<shape.../>为根元素的ShapeDrawable资源,主要用于定义一个基本的几何图形,如矩形、圆形、线条等。

<solid.../>子元素用于指定填充集合图形的的颜色;

<corners.../>子元素用于定义几个图形的四个角的弧度;

<gradient../>子元素用于指定填充几何图形的渐变颜色;

<stroke../>子元素指定几何图形边框线宽度以及颜色;

<padding../>子元素指定几何图形的内边框

源码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="4dip"/>
    <stroke
        android:width="1dip"
        android:color="#BDC7D8" />
</shape>

(2)res/drawable/shape_edit_focus.xml

源码如下:编辑框获得焦点时,使用该shape。与上面的shape区别是,<stroke../>元素的颜色属性值设置不一致。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="4dip"/>
    <stroke
        android:width="1dip"
        android:color="#728ea3" />
</shape> 

(3)res/drawable/selector_edit_frame.xml

功能:用于设置文件编辑框是否有获取焦点时对应的<shape.../>资源。<selector.../>为根元素的StateListDrawable资源,用于组织多个Drawable对象。当使用StateListDrawable作为目标组件的背景、前景图片时,StateListDrawable对象所显示的Drawable对象会随目标组件状态的改变自动切换。该元素可以包含多个<item../>子元素,该元素可指定如下属性:

>android:color或android:drawable:指定颜色或Drawable对象;

>android:state_xxx:指定一个特定状态;

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false" android:drawable="@drawable/shape_edit_normal"/>
    <item android:state_focused="true" android:drawable="@drawable/shape_edit_focus"/>
</selector>

(4)res/layout/main.xml

  ......
 <EditText
       android:background="drawable/selector_edit_frame"
       android:layout_width="match_parent"
       android:layout_weight="wrap_content"/>
  ......

二、动态检测EditText的输入

在Android项目开发中,往往我们在实现登录或注册功能时,需要动态来检测验证码框中的内容来决定是否使能登录/注册按钮。Android系统提供了一个TextWatch事件监听器,其可以实现动态检测EditText输入情况。

1.效果演示

2.源码实现

功能:动态检测验证码输入框是否与随机验证码字符匹配,若匹配则使能登录按钮并改变其背景颜色。

protected void onCreate(Bundle savedInstanceState) {
     Button    loginBtn = (Button)findViewById(R.id.login);
     EditText secCode = (EditText) findViewById(R.id.login_security_code);
     secCode.addTextChangedListener(new TextWatcher() {
   /**
      *文本编辑框内容未改变前回调该方法
    */
       public void beforeTextChanged(CharSequence s, int start, int count,
         int after) {
            loginBtn.setEnabled(false);        //
            loginBtn.setBackgroundColor(Color.parseColor("#DEB887"));
       }
   /**
      *文本编辑框内容改变时回调该方法
    */
       public void onTextChanged(CharSequence s, int start, int before,
             int count) {
                    loginBtn.setEnabled(false);
                    loginBtn.setBackgroundColor(Color.parseColor("#DEB887"));
       }
   /**
      *文本编辑框内容改变后回调该方法
    */
       public void afterTextChanged(Editable s) {
            if (secCode.getText().toString().equalsIgnoreCase(verityCode)) {
                     loginBtn.setEnabled(true);
                     loginBtn.setBackgroundResource(R.drawable.selector_btn_background);
            }
       }
  });
}    
时间: 2024-10-15 14:37:45

EditText自定义边框背景与动态检测用户输入的相关文章

Android之EditText自定义边框和边框颜色(转载)

介绍一种比较常见的用法 第一步:准备两张图片大小一样,颜色不同的图片.图片名称分为:editbox_focus.png和editbox_normal.png 放入工程的drawable文件夹下. 第二步:在drawable文件下创建 my_edittext.xml文件 内容如下: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.a

Thinkphp+AJAX动态验证用户输入是否合法

遇到用户注册等情况时,如果等用户输入所有信息,点击注册按钮提交后,再验证输入是否正确,体验很不好,而且很浪费用户的时间,增加注册成本,这里提供一个例子,演示了怎么使用ajax进行单步验证,使用thinkphp 3.2框架,环境WAMPServer 2.4,版本PHP 5.4.16+ Apache 2.4.4+ MySql 5.6.12 一.数据库设计: 数据库名 thinkphp 表名 tp_user 其中tp_是表前缀,可以在config.php中定义,操作表的时候只用user就行 二.页面设

使用trim方法检测用户输入

首先需要封装trim方法,可以去除字符串两端空格的方法 function trim(str) { return str.replace(/^\s+|\s+$/g, ""); } 获得标签名,以及输入框中的value值,判断是否为空 这儿写出部分代码 var inp = document.getElementById("inp"); inp.onblur = function () { if (trim(this.value) == "") { a

Jquery实现检测用户输入用户名和密码不能为空

要求 1.用户名和密码为空点击登录时提示相应的提示 2.获取用户名输入框时,错误提示清除 思路 1.创建1个input-text标签和1个input-password标签,1个input-botton标签 2.把按钮绑定点击时间,然后检查所有输入框内容是否为空,为空则加上提示 3.把输入框绑定事件,获取焦点时清除提示 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="U

使用javascript制作加法计算器中检测用户输入的数值是否为正整数

一.要求 我们在 C#中,有一个keypress事件,可以做到判断输入的字符是否是非法字符.代码如下: public void txt_Str_KeyPress(object sender.KeyPressEventArgs e) { if(!char.IsDigit(e.KeyChar)) { e.Handled=true; } } 这样我们就会发现输入为非整数时就压根不出现.或者,如果不知道IsDigit()这个方法,我们还是可以按照(e.KeyChar>='0' && e.Ke

Edittext样式的自定义设置(自定义边框和边框颜色)

Edittext改变边框颜色 第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这么做了),代码如下: <EditText android:layout_width="fill_parent" android:layout_height="36dip" android:background="@drawa

Java安全编码之用户输入

0x00 安全引言 1.传统Web应用与新兴移动应用 (1)传统Web应用:浏览器 HTTP 服务器(2)新兴移动应用:APP HTTP 服务器 从安全角度看,传统Web应用与新兴移动应用没有本质区别 2.Web应用安全的核心问题是什么? 用户提交的数据不可信是Web应用程序核心安全问题 用户可以提交任意输入 例如: √ 请求参数->多次提交或者不提交√ 修改Cookie√ 修改HTTP信息头√ 请求顺序->跳过或者打乱 3.Web应用防御 (1)完善的异常处理(2)监控(3)日志:记录重要业

Android 自定义android控件EditText边框背景

在我们进行Android应用界面设计和时候,为了界面风格的统一,我们需要对一些控件进行自定义.比如我们的应用采用的蓝色风格,但是 android的EditText控制获得焦点后显示的却是黄色的边框背景.那么如何让EditText在获得焦点的时候显示的是我们自定义的蓝色的背景 呢? 首先准备两张图片,一张是EditText获得焦点后的边框背景,一张是没有获得焦点时的背景,注意制作成9.png样式的图片,然后在drawable里添加一个selector_edittext_bg.xml文件,内容如下:

Android 应用开发中如何自定义 Drawable 背景?

2020-02-06 关键字:EditText自定义背景.shape.corners 通过 xml 定义 View 的背景 Drawable 资源还是挺常用的. 本篇博文记录几种常用的自定义 Drawable 方式. 1.圆角矩形 A.普通圆角矩形 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/