最近有需求悍手,要使用Material Design 的輸入框,支持右邊有按鈕或是文字袍患。
先看看效果吧坦康。
在輸入框右邊加入文字或者按鈕,在TextInputLayout 里是有一個CheckableImageButton 的诡延,用于明文和密文的切換滞欠,增加按鈕是為里支持其他操作,例如清空輸入框等等肆良。
說說思路吧:
查看過源碼筛璧,TextInputLayout 是垂直的LinearLayout逸绎。
源碼中實現(xiàn)CheckableImageButton 加入文本右邊,其實是在LinearLayout中放入一個FrameLayout夭谤,然后在FrameLayout中加入EditText 和 CheckableImageButton棺牧。所以很簡單,要實現(xiàn)在輸入框右邊加入文字朗儒,也在FrameLayout中添加就好里颊乘。添加按鈕,要么自己添加醉锄,要嘛就復用原來的CheckableImageButton乏悄。很簡單吧~圖1就做好了。
而實現(xiàn)自定義的Error 效果恳不,如圖2檩小,那么涉及到修改hintColor 和 background。在源碼里有這兩個函數(shù)烟勋,分別是updateLabelState() 和 updateEditTextBackground() 识啦, 第一個是修改提示顏色的,第二個是修改輸入框背景的神妹。設置好顏色就OK啦颓哮。圖2 就做好了。
已將代碼上傳到GitHub鸵荠,有部分功能還在進行中冕茅,還未能及時更新。
使用請參照例子:
現(xiàn)有以下還未來得及修改:
1. error 顯示時蛹找,光標顏色未修改姨伤,有人說用反射,還沒嘗試庸疾。
已解決:
自定義CheckableImageButton 時乍楚,都為黑色。函數(shù)applyOperationToggleTint()是修改drawable的顏色的届慈。已添加mOperationToggleApplyTint變量來控制徒溪,默認為false。
如有問題金顿,請聯(lián)系我:wilin52@163.com