在TextInputLayout官方文檔API中描述了它是一種新的繼承自LinearLayout的布局,讓我們使用時里面只能包含一個EditText或者其子類的控件,該布局可以通過設置hint和Error顯示浮動標簽.接下來我們看看布局文件
使用方法
XML中的一些屬性標簽
- app:hintEnable 浮動標簽樣式是否開啟(默認是開啟的)
- app:errorEnabled 設置是否顯示一個錯誤信息,布爾值
- app:hintAnimationEnabled 浮動標簽顯示與隱藏之間有哦一個過度動畫(默認是開啟的)
- app:hintTextAppearance 設置提示文字的樣式(注意這里是運行了動畫效果之后的樣式,這里要通過主題進行更改)
app:hintTextAppearance="@style/hintAppearance" <style name="hintAppearance" parent="TextAppearance.AppCompat"> <item name="android:textSize">14sp</item> <item name="android:textColor">#ffee00</item> </style>
- app:counterEnabled 是否增加后面的字數統計;但是要設置最大值
- app:counterMaxLength 設置輸入的最大值
- app:passwordToggleEnabled 是否顯示后面的眼睛圖標
- app:passwordToggleDrawable 可以替換眼睛圖標成我們自己的
- app:passwordToggleTint 給設置的眼睛圖標設置顏色(這個必須在EditText或者其子類中設置** android:inputType="textPassword"**為密碼樣式的才能看見圖標)
- app:passwordToggleTintMode 控制密碼可見開關圖標的背景顏色混合模式
- app:passwordToggleContentDescription 該功能是為Talkback或其他無障礙功能提供的。
- app:counterOverflowTextAppearance 設置計算器越位后的文字顏色和大小(通過style進行設置的)
- app:counterTextAppearance 設置正常情況下的計數器文字顏色和大小(通過style進行設置的)
- app:errorTextAppearance 錯誤提示的文字大小和顏色(通過style進行設置的)
這里有一個很重要的問題要注意一下:
- TextInputLayout只能又一個子類,并且這個子類必須是EditText的子類
- android:hint 不要兩個都設置,只需要設置一個,如果你要是設置兩個的話,兩個會重疊放在那里,會導致動畫執行了,橫杠上還有文字
- 如過你想改變整體的顏色只要重新寫一個主題的顏色就可以了
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorAccent">#3498db</item> </style>
一些常見的處理
設置錯誤的提示信息
TextInputLayout.setError("只是展示下錯誤的顯示樣式");
if (!mLayoutTop.getEditText().getText().toString().equals("123456")) {
mLayoutTop.setError("賬號信息填寫錯誤");
mInputEditTextTop.setError("只是展示下錯誤的顯示樣式");//這個好丑啊,我是不會用了
}
其實這些判斷的話,和之前的EditText都是一樣的,所以在這里就不說了