toggleButtong
版權聲明:轉載請保留原文連結及作者
http://blog.30sparks.com/material-design-6-textinputlayout/
Android Design Support Library 提供一個TextInputLayout 元件,可用來包著 EditText,令 EditText 得到 focus 時,自動將 hints 變成標題:
|
|
效果

一個 TextInputLayout 只能容納一個 EditText,所以每個 EditText都需要自訂各自的 TextInputLayout。
關於 Hint
TextInputLayout 可直接使用 EditText 上的 hint,用來當成 header 。不過,你也可直接設定 hint 到 TextInputLayout 上,它們的效果也是相同的,值得留意的是,你可同時設定 hint 到 TextInputLayout 和 EditText 上。這樣的話,它們一開始會重叠,而當拿到 focus 時,在 TextInputLayout 上的 hint 會被拿來當 header ,而在 EditText 上的會跟以往一樣,有文字輸入後 hint 會消失。不過我想,在正常情況下應該不會這樣做吧?
字數統計
可使用 app:counterEnabled="true" 和 app:counterMaxLength 可設定顯示輸入文字的長度。
錯誤訊息
TextInputLayout 還有另一好處,是可以顯示錯誤訊息。透過 textInputLayout.setError("Erorr in name input")便在底部可顯示錯誤訊息。

例如為我們之前加的 EditText 加進驗証的的話,可以這樣做
|
|
這樣當按 button 時,若 nameEditText 沒有文字的話,便會顯示 “Error in name input”。
不過有留意到顯示錯誤訊息時,整個 messageEditText 會被推下,因為當初 TextInputLayout 沒有預留空間去顯示錯誤訊息!想避免此情況,可以先設定
或者在 layout xml 上加入app:errorEnabled="true"
|
|
這樣,TextInputLayout 便會預留空間去顯示錯誤訊息了。留意的是,你可用 nameLayout. setErrorEnabled(false) 的話,去消除錯誤訊息,但整個layout 會被拉上去 (因錯誤訊息的位置也會被消除)。若不想 layout 移動的話,便應用nameLayout.setError(null) 去消除。
Style
顏色
想簡單更改底線顏色的話,可到 style.xml 修改 colorAccent
|
|

header
若只想改變 header 顏色 ,可使用 app:hintTextAppearance="style"。先到 style.xml 中加入 TextInputHint
|
|
然後加到 TextInputLayout 加入 app:hintTextAppearance="@style/TextInputHint "
|
|
佷簡單便可修改 header 的風格了。
錯誤訊息
要更改錯誤訊息的顏色的話,跟改 header顏色的方法差不多,這次使用的是app:errorTextAppearance。
- style.xml:
|
|
- layout:
|
|
這樣便可以自訂錯誤訊息的風格了。
結語
要令文字輸入的 UI 更具動感,TextInputLayout 是一個很方便簡單的工具。快加到你的 UI 中吧。