android_design support library_TextInputLayout

来源:互联网 发布:图像算法是什么 编辑:程序博客网 时间:2024/06/05 14:53

1、综述

Design Support Library包含8个控件,具体如下:

Widget Name Description android.support.design.widget.TextInputLayout 强大带提示的MD风格的EditText android.support.design.widget.FloatingActionButton MD风格的圆形按钮,来自于ImageView android.support.design.widget.Snackbar 类似Toast,添加了简单的单个Action android.support.design.widget.TabLayout 选项卡 android.support.design.widget.NavigationView DrawerLayout的SlideMenu android.support.design.widget.CoordinatorLayout 超级FrameLayout android.support.design.widget.AppBarLayout MD风格的滑动Layout android.support.design.widget.CollapsingToolbarLayout 可折叠MD风格ToolbarLayout

2、TextInputLayout控件

在MD中,使用TextInputLayout将EditText进行了封装,提示信息会变成一个显示在EditText之上的floating label,这样用户就始终知道他们现在输入的是什么,而且过度动画是平滑的。还可以在下方通过setError设置Error提示。

注意项: TextInputLayout控件和LinearLayout完全一样,它只是一个容器。跟ScrollView一样,TextInputLayout只接受一个子元素。子元素需要是一个EditText元素。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
<android.support.design.widget.TextInputLayout    android:id="@+id/usernameWrapper"    android:layout_width="match_parent"    android:layout_height="wrap_content">      <EditText        android:id="@+id/username"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:inputType="textEmailAddress"        android:hint="Username"/>  </android.support.design.widget.TextInputLayout>

这里写图片描述这里写图片描述
TextInputLayout的错误处理简单快速。需要的方法是setErrorEnabled和setError。

setError设置一个红色的错误消息,显示在EditText的下面。如果传入的参数为null,错误消息将清空。并且它会改变整个EditText控件为红色。如果错误功能未开启但是你调用了传入非null参数的setError,那么setErrorEnabled(true)将自动被调用。

    @OnClick({R.id.btn})    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn:                hideKeyboard();                String username = usernameWrapper.getEditText().getText().toString();                String password = passwordWrapper.getEditText().getText().toString();                boolean flag = true;                if (!validateEmail(username)) {                    usernameWrapper.setError("Not a valid email address!");                    flag = false;                } else {                }                if (!validatePassword(password)) {                    passwordWrapper.setError("Not a valid password!");                    flag = false;                }                if (!flag) {                    return;                }                usernameWrapper.setErrorEnabled(false);                passwordWrapper.setErrorEnabled(false);                doLogin();                break;            default:                break;        }    }

这里写图片描述

setErrorEnabled开启错误提醒功能。这直接影响到布局的大小,增加底部padding为错误标签让出空间。在setError设置错误消息之前开启这个功能意味着在显示错误的时候布局不会变化。

最后你还可以改变TextInputLayout控件的颜色。默认AppCompact会把它设置成绿色的,但是很有可能这个颜色会和你的颜色主题(color palette)冲突。谷歌把Design Support Library写的很好。每一个控件的颜色都是直接通过主题颜色绘制的,在 style.xml 中指定。打开它添加colorAccent 到主题以改变表单的颜色。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    <item name="colorAccent">#3498db</item></style>

这里写图片描述

0 0