隨着 Material Design 的到來, AppCompat v21 中也提供了 Material Design 的控件外觀支持,其中包括 EditText 。但 AppCompat 中的 EditText 實在有點難用,由於它是經過 colorAccent 來自動爲控件着色的,並無提供設置顏色的api,所以須要經過爲控件定製theme的方式來實現自定義控件顏色。 另外,除了外觀上的變化, AppCompat 沒有提供任何 Google Material Design Spec 中提到的特性。因而我便作了這個庫: MaterialEditText 。(其實前段時間已經作好了一個簡單的版本自用,只等着谷歌發佈新SDK,在發現新SDK中沒有給出我期待的支持後,才把控件從新打造,作成了如今的版本)html
在佈局文件中把 EditText 替換爲 com.rengwuxian.materialedittext.MaterialEditText 就好了。MaterialEditText 是直接繼承的 EditText ,沒有加入一些 Wrapper Layout , 所以多數狀況下你不須要修改 java 文件。java
<com.rengwuxian.materialedittext.MaterialEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Basic"/>
Base Color 被用做背景線的顏色、主字體的顏色(透明度被重置爲87%)和提示字體的顏色(透明度被重置爲26%)。你能夠使用 app:baseColor
(xml) 或者 setBaseColor()
(java) 來指定 Base Color 。Base Color 的默認值爲純黑。android
app:baseColor="#0056d3"
Primary Color 被用做激活狀態的輸入框背景色、高亮的Floating Label色和底部省略號的顏色。你能夠使用 app:primaryColor
(xml) 或者 setPrimaryColor()
(java) 來指定 Primary Color。若是沒有設置Primary Color,默認將使用 Base Color 來替代。git
app:baseColor="#0056d3" app:primaryColor="#982360"
Floating Label 有三種模式: none
, normal
, highlight
。 你能夠使用 app:floatingLabel
(xml) 或者 setFloatingLabel()
(java) 來設置 Floating Label 的模式。github
normal:api
app:floatingLabel="normal"
highlight:app
app:floatingLabel="highlight"
當設置顯示底部省略號後,控件會在文字向左滾動時在底部左側顯示一個三個點的省略號,點擊省略號將自動把光標置於字符串的開始處。你能夠經過 app:singleLineEllipsis=true
(xml) 或者 setSingleLineEllipsis()
(java) 來設置它。這個屬性將自動設置 android:singleLine
爲 true。佈局
注意:底部省略號會自動增大控件底部的高度。post
app:singleLineEllipsis="true"
設置字符數限制後,控件右下角會顯示已輸入字符數和最大字符數的角標,並在超過限制後顯示警告色(默認爲紅色)。 你能夠經過 app:maxCharacters
(xml) 或者 setMaxCharacters()
(java) 來設置字符數,經過 app:errorColor
或者 setErrorColor()
(java) 來自定義警告色。字體
注意:字符數角標會自動增大控件底部的高度。
默認 error color:
app:maxCharacters="10"
自定義 error color:
app:maxCharacters="10" app:errorColor="#ddaa00"
github地址: MaterialEditText
library下載:MaterialEditText-1.0.0.aar
sample下載:MaterialEditText-1.0.0-sample.apk
本文同步發至個人我的博客和開源中國