当前位置: 首页 > news >正文

TextInputLayout 和 TextInputEditText 的简单介绍以及使用

TextInputLayout 和 TextInputEditText 是属于 design 包里面的控件

呐,就是这个:compile 'com.android.support:design:26.0.0-alpha1'

这两者要结合使用,其实只用 TextInputLayout ,然后 TextInputEditText 用 EditText 替换好像也可以。

下面来看一个示例代码咯

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/userNameLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/userName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/passwdLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/passwd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </android.support.design.widget.TextInputLayout>

</LinearLayout>

 Activity的代码如下

    private TextInputLayout userNameLayout;
    private TextInputEditText userName;

    private TextInputLayout passwdLayout;
    private TextInputEditText passwd;

    userNameLayout = (TextInputLayout) findViewById(R.id.userNameLayout);
    userName = (TextInputEditText) findViewById(R.id.userName);
    userNameLayout.setHint("请输入账号");
    userName.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() < 3) {
                userNameLayout.setErrorEnabled(true);
                userNameLayout.setError("用户名不能小于3位");
            } else {
                userNameLayout.setErrorEnabled(false);
            }
        }
    });


    passwdLayout = (TextInputLayout) findViewById(R.id.passwdLayout);
    passwdLayout.setHint("请输入密码");
    passwd = (TextInputEditText) findViewById(R.id.passwd);
    passwd.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() < 3) {
                passwdLayout.setErrorEnabled(true);
                passwdLayout.setError("密密不222能小于3位");
            } else {
                passwdLayout.setErrorEnabled(false);
            }
        }
    });

    }

其实也没什么,

主要的代码也就几行

userNameLayout.setHint("请输入账号");

这行代码,就是设置提示信息

 

passwdLayout.setErrorEnabled(true);

这行表示,启用错误提示,相应的,传入false就表示关闭错误提示。

 

passwdLayout.setError("密密不222能小于3位");

这个表示,具体的错误提示

 

转载于:https://www.cnblogs.com/fwling/p/7197545.html

相关文章:

  • golang开发环境配置及Beego框架安装
  • 面向对象编程(十二)——final关键字
  • 【Unity笔记】获得鼠标点击屏幕的位置,并转成世界坐标
  • Win7下不能查看xp系统共享的文件,解决方法
  • 加载 xib 文件 UIView
  • 最优化局部极小点的条件(二)
  • 如何从Apache官网下载windows版apache服务器
  • SparseArrayE详解
  • Ubuntu 12.04安装ssh出现“unable to locate package apenssh-server”
  • 我也来开发2048之主界面设计
  • 独立GPSamp;50米防水 华为运动手环上手体验
  • PowerShell处理RSS信息
  • HTML友情链接代码
  • DOM中的动态NodeList与静态NodeList
  • springJdbc like模糊查询,Spring namedParameterJdbcTemplate like查询
  • @angular/forms 源码解析之双向绑定
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【技术性】Search知识
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Django 博客开发教程 8 - 博客文章详情页
  • export和import的用法总结
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript 基础知识 - 入门篇(一)
  • Java程序员幽默爆笑锦集
  • MYSQL 的 IF 函数
  • MySQL用户中的%到底包不包括localhost?
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • 大快搜索数据爬虫技术实例安装教学篇
  • 飞驰在Mesos的涡轮引擎上
  • 后端_ThinkPHP5
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于组件的设计工作流与界面抽象
  • 讲清楚之javascript作用域
  • 理清楚Vue的结构
  • 每天10道Java面试题,跟我走,offer有!
  • 前言-如何学习区块链
  • 区块链技术特点之去中心化特性
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 试着探索高并发下的系统架构面貌
  • 收藏好这篇,别再只说“数据劫持”了
  • 通过npm或yarn自动生成vue组件
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​【已解决】npm install​卡主不动的情况
  • #HarmonyOS:Web组件的使用
  • #Z2294. 打印树的直径
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • .NET 8.0 中有哪些新的变化?
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化