【MaterialEditText】 Material Design 的 EditText
2015-08-11 17:27
387 查看
转发地址:http://www.rengwuxian.com/post/materialedittext
为了避免和其他库冲突,2.0为所有属性加了前缀
使用新的规则来设置 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 文件。
自定义颜色
BaseColor被用作背景线的颜色、主字体的颜色(透明度被重置为87%)和提示字体的颜色(透明度被重置为26%)。你可以使用
或者
来指定 Base Color 。Base Color 的默认值为纯黑。
Primary Color 被用作激活状态的输入框背景色、高亮的Floating Label色和底部省略号的颜色。你可以使用
或者
来指定 Primary Color。如果没有设置Primary Color,默认将使用 Base Color 来替代。
Floating Label
FloatingLabel有三种模式:
你可以使用
或者
来设置 Floating Label 的模式。
normal:
highlight:
自定义 floating label 的文字:
![CustomFloatingLabelText]./images/MaterialEditText/custom_floating_label_text.png)
底部省略号
当设置显示底部省略号后,控件会在文字向左滚动时在底部左侧显示一个三个点的省略号,点击省略号将自动把光标置于字符串的开始处。你可以通过
true。
注意:底部省略号会自动增大控件底部的高度。
字符数限制
设置字符数限制后,控件右下角会显示已输入字符数和最大字符数的角标,并在超过限制后显示警告色(默认为红色)。 你可以通过
或者
来设置字符数,通过
来自定义警告色。
使用
或者
来设置最多字数,使用
或者
来设置最少字数. 当字数不符合限制要求的时候,底部的线和显示字数的角标都会变红(你也可以使用
error color)。
注意:字符数角标会自动增大控件底部的高度。
默认 error color:
自定义 error color:
Helper Text 和 Error Text
helper text:
error text:
在 java代码中调用原生的
正则表达式检查:
带有报错字符串的正则表达式检查:
自定义 accent typeface
floating label, error/helper text, character counter 的typeface.
Hide Underline
字符串检查
检查后,如果有错,将自动调用
单一条件检查:
复合条件检查:
底部横线和所有文字在无焦点状态的基础色。默认为黑色。
底部横线和 Floating label 的高亮色(如果 met_floatingLabel 设置为 highlight 的话)。默认使用 baseColor。
和自带的
和自带的
自定义底部横线的颜色。
Floating label 应该怎样被展示。选项有:none, normal, highlight。 默认是 none.
自定义 floating label 的文字。
Floating label 的字体大小。默认为 12sp。
Floating label 的字体颜色。默认为半透明的 baseColor.
Floating label 和主文字区域的间隔。
是否使用动画来显示和消失 floating label 。默认为 true 。
是否总是显示 Floating label 。默认为 false 。
限制的最少字数。默认为0。
限制的最大字数。0为无限制。默认为0.
底部的 helper text。
是否总是显示 helper text, 而不仅仅是在获得焦点状态时。默认为 false。
Helper text 的字体颜色。
Error text 的字体颜色。
底部文字(Helper/Error text)的字体大小。默认为12sp。
Helper/Error text 正在显示。
辅助文字的字体.
右边的图标.
图标和主区域之间的padding。默认为16dp, 遵守 Google's Material Design Spec 中的建议.
是否隐藏底部横线。默认为 false。
是否自动检查字符串。默认为 false。
是否在文字超长时显示底部的省略号。默认为 false。
是否显示用来清空文字的 Clear button 。默认为 false。
github地址: MaterialEditText
library下载:MaterialEditText-2.0.3.aar
sample下载:MaterialEditText-2.0.3-sample.apk
注意: 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 的默认值为纯黑。
app:met_baseColor="#0056d3"
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:
app:met_floatingLabel="normal"
highlight:
app:met_floatingLabel="highlight"
自定义 floating label 的文字:
app:met_floatingLabelText="XXX"
![CustomFloatingLabelText]./images/MaterialEditText/custom_floating_label_text.png)
底部省略号
当设置显示底部省略号后,控件会在文字向左滚动时在底部左侧显示一个三个点的省略号,点击省略号将自动把光标置于字符串的开始处。你可以通过
app:met_singleLineEllipsis=true(xml)或者
setSingleLineEllipsis()(java)来设置它。这个属性将自动设置
android:singleLine为
true。
注意:底部省略号会自动增大控件底部的高度。
app:met_singleLineEllipsis="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
helper text:
app:met_helperText="Integer"
error text:
在 java代码中调用原生的
setError(CharSequence error)就可以实现.
正则表达式检查:
validationEditText.isValid("\\d+");
带有报错字符串的正则表达式检查:
validationEditText.validate("\\d+", "Only Integer Valid!");
自定义 accent typeface
floating label, error/helper text, character counter 的typeface.
app:met_accentTypeface="fonts/Roboto-LightItalic.ttf"
Hide Underline
app:met_hideUnderline="true"
字符串检查
检查后,如果有错,将自动调用
setError()方法来提示错误。
单一条件检查:
et.validateWith(new RegexpValidator("Only Integer Valid!", "\\d+"));
复合条件检查:
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
相关文章推荐
- Oracle忘记用户名和密码的解决方案
- 转:使用Nutch和Solr抓取并索引网页
- 26-网络编程-15-网络编程(TCP协议-练习-常见问题)
- 26-网络编程-16-网络编程(TCP协议-练习-上传文本文件)
- MongoDB save or update
- 图文详解YUV420数据格式
- 在JAVA中线程到底起到什么作用
- 使用Depth Texture
- 生成子集
- NOIP2013 华容道 解题报告
- socket编程窗口关闭进行不退出
- 让易度文档管理帮您降低企业运营成本
- get与post的区别
- Android-Universal-Image-Loaderde 图片异步加载并缓存
- listView实现时光轴效果
- 哗啦啦村的扩建
- Android学习笔记
- getchar() putch()的使用
- 26-网络编程-14-网络编程(TCP协议-练习-文本转换服务端)
- fedora21 配置apache共享文件目录