Material Design 入門(一)——TextInputLayout和TextInputEditText
阿新 • • 發佈:2019-01-27
最近學習了Material Design中提供的一些控制元件,下面就他們的使用方法陳述給大家,希望能夠幫助大家快速上手。
本例子使用在控制元件都在com.android.support:design包中,如果使用的是Android studio開發工具,在build.gradle 中直接新增
compile 'com.android.support:design:24.1.1'即可。下面就開始Material Design的學習之旅吧。
本節為大家講解的是TextInputLayout和TextInputEditText
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.TextInputLayoutandroid: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) { } });效果如圖:(紅色框內的字型顏色還沒有找到方法修改,各位可以研究下,有方法可以給我留言。)