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位");
这个表示,具体的错误提示