Material Design (二),TextInputLayout的使用
前言
一般登录注冊界面都须要EditText这个控件来让用户输入信息,同一时候我们通常会设置一个标签(使用TextView)和EditText的hint属性来提示用户输入的内容,而设计库中高级组件TextInputLayout则专门为EditText设计的。即通过使用TextInputLayout包裹EditText实现当用户開始输入时hint属性值将显示在EditText上面作为一个提示标签,这个过程还带有动画效果,这样就避免了用户输入时输入提示消失的情况,同一时候。还能够更好地向用户提示错误输入信息。
TextInputLayout的两个功能:
- 给EditText加入一个带有动画效果的提示标签(利用EditText的hint属性的值作为提示标签内容);
- 处理错误输入。将错误输入提示信息显示在EditText附近。便于提示用户更好地完毕输入。
1. 实现浮动标签提示效果
TextInputLayout和FrameLayout一样都是一个ViewGroup,而TextInputLayout包裹的是EditText,而且会将EditText的android:hint属性值作为提示标签,所以。使用很easy,例如以下:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_margin="20dp"
android:id="@+id/usernameWraper"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:hint="请输入用户名"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
用TextInputLayout包裹EditText并给EditText设置了hint属性后。这个EditText就带有了浮动提示标签的效果了,为了更好地看到效果。丰富一下这个xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:background="#ff9900"
android:layout_height="200dp">
<TextView
android:text="用户登录"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:textColor="#fff"
android:textSize="30sp"
android:layout_height="wrap_content"/>
</RelativeLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_margin="20dp"
android:id="@+id/usernameWraper"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:hint="请输入用户名"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_margin="20dp"
android:id="@+id/passwordWraper"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:hint="请输入密码"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
<Button
android:layout_width="match_parent"
android:layout_margin="20dp"
android:text="登录"
android:id="@+id/btn_login"
android:layout_height="wrap_content"/>
</LinearLayout>
2. 显示错误输入信息
TextInputLayout使得我们在验证输入数据是能够更加方便地显示错误输入提示,这样能够使得输入更加友好。
对于处理错误信息,TextInputLayout提供了两个方法:
- setError(String message):设置错误提示信息。这个信息将会显示在EditText附近。
- setErrorEnabled(boolean enabled):设置错误信息不能够用,也就是移除setError(String message)加入的错误提示信息。
代码样例:
package com.example.lt.meterialdesign;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private TextInputLayout mUsernameWraper;
private TextInputLayout mPasswordWraper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mUsernameWraper = (TextInputLayout) findViewById(R.id.usernameWraper);
mPasswordWraper = (TextInputLayout) findViewById(R.id.passwordWraper);
Button btn_login = (Button) findViewById(R.id.btn_login);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TextInputLayout能够取得包裹的EditText
String username = mUsernameWraper.getEditText().getText().toString().trim();
String password = mPasswordWraper.getEditText().getText().toString().trim();
if(TextUtils.isEmpty(username)){
mUsernameWraper.setError("用户名不能为空");
return;
}else{
// 移除错误提示信息
mUsernameWraper.setErrorEnabled(false);
}
if(TextUtils.isEmpty(password)){
mPasswordWraper.setError("密码不能为空");
return;
}else{
// 移除错误提示信息
mPasswordWraper.setErrorEnabled(false);
}
}
}
这里仅仅是对username与password是否为空进行了推断。假设要指定格式能够结合正則表達式验证数据格式。对于EditText能够给它加入文本改变监听addTextChangedListener,当用户改变输入的文本后进行数据格式的验证。然后更加情况显示输入提示。
执行效果:
能够看到,当我们開始在EditText中输入信息的时候,EditText的hint属性值将会显示在EditText上面,而且带有一个动画效果,显示为一个浮动标签。而且,当输入的数据格式不正确时,还会显示错误提示在EditText以下。
Material Design (二),TextInputLayout的使用的更多相关文章
- Android(Lollipop/5.0) Material Design(二) 入门指南
Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...
- Material Design之TextInputLayout使用示例
Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个supp ...
- Material Design之TextInputLayout、Snackbar的使用
这两个控件也是Google在2015 I/O大会上公布的Design Library包下的控件,使用比較简单,就放在一起讲了,但有的地方也是须要特别注意一下. TextInputLayout Text ...
- Material Design学习-----TextInputLayout
TextInputLayout是为EditText提供了一种新的实现和交互方式.在传统的EditText中存在一个hint属性,是说在editext中没有内容时,默认的提示信息.当想edittext中 ...
- Android(Lollipop/5.0) Material Design(六) 使用图像
Material Design列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design(二 ...
- 用户登录(Material Design + Data-Binding + MVP架构模式)实现
转载请注明出处: http://www.cnblogs.com/cnwutianhao/p/6772759.html MVP架构模式 大家都不陌生,Google 也给出过相应的参考 Sample, 但 ...
- Android(Lollipop/5.0) Material Design(一) 简单介绍
Material Design系列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design( ...
- Android(Lollipop/5.0) Material Design(四) 创建列表和卡片
Material Design系列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design( ...
- Android Material Design控件使用(二)——FloatButton TextInputEditText TextInputLayout 按钮和输入框
FloatingActionButton 1. 使用FloatingActionButton的情形 FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App ...
随机推荐
- 关于each()、find()、filter()遍历节点的操作方法
关于each().find().filter()遍历节点的操作方法 each语法: each(fn) ; 返回值:jQuery fn:代表对于每个匹配元素所要执行的函数 each()方法共有三种形式 ...
- C# 编写的Windows serice程序. 安装时出现异常!
初学Windows Service 程序的编写,按照MSDN上写了一个service! 遇到安装服务的错误, 能帮忙看下是什么原因吗? 下面是在命令行下的安装结果: 正在运行事务处理安装. 正在开始安 ...
- VMWare虚拟机如何与主机共享文件夹(最容易看懂的讲解)附图~
http://wenku.baidu.com/view/54ab9e19227916888486d776.html 新建好虚拟机并安装好系统后,在编辑虚拟机设置--选项进行以下设置: 点添加 选择你要 ...
- VS2013 更改MFC标题栏图标和生成的执行文件图标
创建一个新工程,可以什么都不加.打开.rc, 创建或打开Icon资源(以下都以Icon为例). 单击工程窗口的资源视图标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delet ...
- 经常用的Jquery图片轮转
1.HTML结构 <div class="main_view"> <div class="window"> ...
- AC日记——斐波那契数列 洛谷 P1962
斐波那契数列 思路: 矩阵快速幂: 来,上代码: #include <cstdio> #include <cstring> #include <iostream> ...
- [入门OJ3876]怎样学习哲学
题目大意: 有一个$n\times m(n,m\leq 10^9)$的网格图,从一个点可以到下一行中列数比它大的点.有$k(k\leq 2000)$个点是不能走的,问从第$1$行到第$n$行共有几种方 ...
- lua中self.__index = self是什么意思?
example1 Account = {balance = 0} function Account:new(conf) conf = conf or {} setmetatable(conf,self ...
- 收纳箱1号 | GitHub Pages部署静态网页的一点私货
Static site 总结各种各有的 static site generator Jekyll 其实是一个 static site generator. 如果你去 Google 这个,会发现有很多总 ...
- Linux Whois命令安装与使用
大家都知道查看域名的详细信息,都是跑去whois服务器去查询,如 http://whois.chinaz.com 其实在Linux下直接有一个whois的命令,不过需要安装jwhois才可以,以Cen ...