轉發位址:http://www.rengwuxian.com/post/materialedittext
注意: 2.0 不相容 1.0 的API!以下是改動内容:
- 為了避免和其他庫沖突,2.0為所有屬性加了字首
.
met_
- 使用新的規則來設定 baseColor 的預設值。舊規則:提取 window 的背景色來選取與之相對的顔色作為預設 baseColor (純黑或純白)。新的規則:固定為黑色。
随着 Material Design 的到來, AppCompat v21 中也提供了 Material Design 的控件外觀支援,其中包括 EditText 。但 AppCompat 中的 EditText 實在有點難用,因為它是通過 colorAccent 來自動為控件着色的,并沒有提供設定顔色的api,是以需要通過為控件定制theme的方式來實作自定義控件顔色。 另外,除了外觀上的變化, AppCompat 沒有提供任何 Google Material Design Spec 中提到的特性。于是我便做了這個庫: MaterialEditText 。
特性和使用方式:
- 基本使用
在布局檔案中把 EditText 替換為 com.rengwuxian.materialedittext.MaterialEditText 就行了。MaterialEditText 是直接繼承的 EditText ,沒有加入一些 Wrapper Layout , 是以多數情況下你不需要修改 java 檔案。
<com.rengwuxian.materialedittext.MaterialEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Basic"/>
- 自定義顔色
BaseColor被用作背景線的顔色、主字型的顔色(透明度被重置為87%)和提示字型的顔色(透明度被重置為26%)。你可以使用
app:met_baseColor
(xml) 或者
setBaseColor()
(java) 來指定 Base Color 。Base Color 的預設值為純黑。
Primary Color 被用作激活狀态的輸入框背景色、高亮的Floating Label色和底部省略号的顔色。你可以使用
app:met_primaryColor
(xml) 或者
setPrimaryColor()
(java) 來指定 Primary Color。如果沒有設定Primary Color,預設将使用 Base Color 來替代。
app:met_baseColor="#0056d3"
app:met_primaryColor="#982360"
- Floating Label
FloatingLabel有三種模式:
none
,
normal
,
highlight
。 你可以使用
app:met_floatingLabel
(xml) 或者
setFloatingLabel()
(java) 來設定 Floating Label 的模式。
normal:
highlight:
自定義 floating label 的文字:
![CustomFloatingLabelText]./images/MaterialEditText/custom_floating_label_text.png)
- 底部省略号
當設定顯示底部省略号後,控件會在文字向左滾動時在底部左側顯示一個三個點的省略号,點選省略号将自動把光标置于字元串的開始處。你可以通過
app:met_singleLineEllipsis=true
(xml)或者
setSingleLineEllipsis()
(java)來設定它。這個屬性将自動設定
android:singleLine
為 true。
注意:底部省略号會自動增大控件底部的高度。
- 字元數限制
設定字元數限制後,控件右下角會顯示已輸入字元數和最大字元數的角标,并在超過限制後顯示警告色(預設為紅色)。 你可以通過
app:maxCharacters
(xml) 或者
setMaxCharacters()
(java) 來設定字元數,通過
app:errorColor
或者
setErrorColor()
(java) 來自定義警告色。
使用
app:met_maxCharacters
(xml) 或者
setMaxCharacters()
(java) 來設定最多字數,使用
app:met_minCharacters
(xml) 或者
setMinCharacters()
(java) 來設定最少字數. 當字數不符合限制要求的時候,底部的線和顯示字數的角标都會變紅(你也可以使用
app:met_errorColor
或者
setErrorColor()
來自定義 error color)。
注意:字元數角标會自動增大控件底部的高度。
app:met_minCharacters="5"
app:met_maxCharacters="10"
預設 error color:
自定義 error color:
app:met_maxCharacters="10"
app:met_errorColor="#ddaa00"
- Helper Text 和 Error Text
【MaterialEditText】 Material Design 的 EditText helper text:
error text:
在 java代碼中調用原生的
setError(CharSequence error)
就可以實作.
正規表達式檢查:
帶有報錯字元串的正規表達式檢查:
-
自定義 accent typeface
floating label, error/helper text, character counter 的typeface.
【MaterialEditText】 Material Design 的 EditText - Hide Underline
【MaterialEditText】 Material Design 的 EditText -
字元串檢查
檢查後,如果有錯,将自動調用
setError()
方法來提示錯誤。
單一條件檢查:
複合條件檢查:
et.addValidator(new CustomValidator1()) .addValidator(new CustomValidator2()) .addValidator(new RegexpValidator("Only Integer Valid!", "\\d+"));
全部參數
通用顔色
met_baseColor
: 底部橫線和所有文字在無焦點狀态的基礎色。預設為黑色。
met_primaryColor
: 底部橫線和 Floating label 的高亮色(如果 met_floatingLabel 設定為 highlight 的話)。預設使用 baseColor。
met_textColor
: 和自帶的
android:textColor
作用相同。換用這個就好。
met_textColorHint
: 和自帶的
android:textColorHint
作用相同。換用這個就好。
met_underlineColor
: 自定義底部橫線的顔色。
Floating label
met_floatingLabel
: Floating label 應該怎樣被展示。選項有:none, normal, highlight。 預設是 none.
met_floatingLabelText
: 自定義 floating label 的文字。
met_floatingLabelTextSize
: Floating label 的字型大小。預設為 12sp。
met_floatingLabelTextColor
: Floating label 的字型顔色。預設為半透明的 baseColor.
met_floatingLabelPadding
: Floating label 和主文字區域的間隔。
met_floatingLabelAnimating
: 是否使用動畫來顯示和消失 floating label 。預設為 true 。
met_floatingLabelAlwaysShown
: 是否總是顯示 Floating label 。預設為 false 。
字數限制
met_minCharacters
: 限制的最少字數。預設為0。
met_maxCharacters
: 限制的最大字數。0為無限制。預設為0.
Helper/Error text
met_helperText
: 底部的 helper text。
met_helperTextAlwaysShown
: 是否總是顯示 helper text, 而不僅僅是在獲得焦點狀态時。預設為 false。
met_helperTextColor
: Helper text 的字型顔色。
met_errorColor
: Error text 的字型顔色。
met_bottomTextSize
: 底部文字(Helper/Error text)的字型大小。預設為12sp。
met_minBottomTextLines
:底部為文字預留的行數,不管是否有 Helper/Error text 正在顯示。
字型(Typeface)
met_typeface
: 主文字的字型.
met_accentTypeface
: 輔助文字的字型.
Material Design 風格的左右圖示
met_iconLeft
: 左邊的圖示.
met_iconRight
: 右邊的圖示.
met_iconPadding
: 圖示和主區域之間的padding。預設為16dp, 遵守 Google's Material Design Spec 中的建議.
Others
met_hideUnderline
: 是否隐藏底部橫線。預設為 false。
met_autoValidate
: 是否自動檢查字元串。預設為 false。
met_singleLineEllipsis
: 是否在文字超長時顯示底部的省略号。預設為 false。
met_clearButton
: 是否顯示用來清空文字的 Clear button 。預設為 false。
github位址: MaterialEditText
library下載下傳:MaterialEditText-2.0.3.aar
sample下載下傳:MaterialEditText-2.0.3-sample.apk