1. 程式人生 > >Material Design 入門(一)——TextInputLayout和TextInputEditText

Material Design 入門(一)——TextInputLayout和TextInputEditText

最近學習了Material Design中提供的一些控制元件,下面就他們的使用方法陳述給大家,希望能夠幫助大家快速上手。

本例子使用在控制元件都在com.android.support:design包中,如果使用的是Android studio開發工具,在build.gradle 中直接新增

compile 'com.android.support:design:24.1.1'即可。下面就開始Material Design的學習之旅吧。
本節為大家講解的是TextInputLayoutTextInputEditText
1、TextInputLayout
Layout which wraps an 
EditText (or descendant) to show a floating label when the hint is hidden due to the user
inputting text.
根據TextInputLayout的繼承結構可以看出,它就是一種新的layout佈局,並且在這個佈局中包含了EditText或者其子類這個控制元件,這個
佈局可以顯示一個浮動的文字,用來展示EditText的提示文字hint和EditText輸入錯誤時的錯誤提示文字。
setHint():設定EditText的提示文字
下面給出基本例子:
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimaryDark" android:padding="10dp" android:visibility="gone"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height=
"wrap_content" android:background="@drawable/selector_edittext_bg" android:inputType="number" android:padding="5dp" android:textColor="?attr/colorAccent" android:textColorHint="@android:color/holo_red_light"/> </android.support.design.widget.TextInputLayout> Java程式碼如下:
        textInputLayout = (TextInputLayout) findViewById(R.id.textInputLayout);
        textInputLayout.setHint("請輸入4位學號");
        editText = (EditText) findViewById(R.id.editText);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (charSequence.length() > 4) {
                    textInputLayout.setError("學號輸入錯誤");
                    textInputLayout.setErrorEnabled(true);
} else {
                    textInputLayout.setErrorEnabled(false);
}
            }

            @Override
public void afterTextChanged(Editable editable) {

            }
        });
  效果如圖:
2、TextInputEditText
TextInputEditText是EditText的子類,可以和EditText一樣和TextInputLayout一起使用實現hint提示和錯誤提示,只是UI效果有所差別。
setError():設定出錯提示資訊
程式碼如下:
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimaryDark"
android:padding="10dp"
android:visibility="visible">

    <android.support.design.widget.TextInputEditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_edittext_bg"
android:inputType="number"
android:padding="5dp"
android:textColor="?attr/colorAccent"
android:textColorHint="@android:color/holo_red_light"
android:visibility="gone"/>
</android.support.design.widget.TextInputLayout>
Java程式碼和上面差不多
        textInputLayout = (TextInputLayout) findViewById(R.id.textInputLayout);
        textInputLayout.setHint("請輸入4位學號");
        editText = (EditText) findViewById(R.id.editText);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if (charSequence.length() > 4) {
                    editText.setError("學號輸入錯誤");
//                    textInputLayout.setError("學號輸入錯誤");
//                    textInputLayout.setErrorEnabled(true);
} else {
//                    textInputLayout.setErrorEnabled(false);
}
            }

            @Override
public void afterTextChanged(Editable editable) {

            }
        });
效果如圖:(紅色框內的字型顏色還沒有找到方法修改,各位可以研究下,有方法可以給我留言。)