最近看见我的文章被很多人喜欢,这里先谢谢大家了!感谢你对我写作的认可。
本文知识点:
- TextInputLayout和TextInputEdittext是什么?
- TextInputLayout和TextInputEdittext有哪些属性?
- TextInputLayout和TextInputEdittext的常见问题?
- TextInputLayout和TextInputEdittext的一些常见操作?
先上一张效果图!最起码知道讲的是什么?省的你不感兴趣,还耽误时间!!!
1. TextInputLayout和TextInputEdittext是什么
关于这个谷歌没有做过多的解释,其实我觉得没有什么好解释的!这两个控件都是用于输入的,TextInputLayout是继承LinearLayout的,但是内部只能有一个子类,并且这个子类必须是EditText的子类。TextInputEdittext是继承Edittext的一个控件。没有什么好说的,有的人说这个控件的动画太难看,我觉得还行吧!不是那么难看。。。。
2. TextInputLayout和TextInputEdittext有哪些属性
- android:hint 提示文字
- app:counterEnabled 是否添加计数功能,默认是false
- app:counterMaxLength 最大的输入数量(如果计数显示的话,影响显示)
- app:errorEnabled 是否有错误提示
- app:errorTextAppearance 设置错误提示的文字样式
- app:hintAnimationEnabled 是否设置提示文字的动画
- app:hintEnabled 是否启动浮动标签功能,如果不启用的话,所有提示性信息都将在Edittext中显示
- app:hintTextAppearance 设置提示性文字的样式
- app:passwordToggleContentDescription 该功能是为Talkback或其他无障碍功能提供
- app:passwordToggleEnabled 是否显示后面的提示图片
- app:passwordToggleDrawable 替换后面的提示图片
- app:passwordToggleTint 给后面的提示图片设置颜色
- app:passwordToggleTintMode 控制密码可见开关图标的背景颜色混合模式
- app:counterOverflowTextAppearance 设置计算器越位后的文字颜色和大小(通过style进行设置的)
- app:counterTextAppearance 设置正常情况下的计数器文字颜色和大小(通过style进行设置的)
基本上可以设置的属性就这么多,接下来我们开始实践吧!
3. TextInputLayout和TextInputEdittext的常见问题?
其实每次些简单使用的时候,我都很纠结,有的控件直接写就可以了,但其实里面有很多需要注意的,否则你可能需要找好久才能够找到。
我先抛出几个问题,如果你知道的话,就不用往下看了!!!嘻嘻。。。。
- 问题1:右边显示的图标为什么设置了还是显示不出来?
- 问题2:右边的图标显示出来了,点击之后图片怎么换?
- 问题3:怎么设置相应区域的颜色?
- 问题4:hint属性,我两个都设置会怎样?
先看一张最原始的图片,是我们什么也没有改变的样子!
上面的问题你能答上来的话,我相信你对这两个控件已经很熟悉了,这个是我刚开始使用这里两个控件的时候遇到的问题。我眼神也是不好,经常踩坑。这几个都是平时项目中经常用来对付产品和UI的。很常见的问题!不是吗?想好答案了吗?如果还没有的话~~~
问题1:
开始的时候我觉得设置了app:passwordToggleDrawable图片,但是怎么也显示不出来,我想是不是控件的问题,于是就各种百度。看API文档也没有说不显示怎么处理啊?忘记当时找的时那片文章了,对不起作者了。当你设置inputType不是密文的时候,后面的图标时不会显示的!所以必须添加
android:inputType="xxxPassword"
千万别添加错了,这个是添加在TextInputEditText上的!
问题2:
经历了问题1之后,我发现图标是显示出来了,然后我发现我更换了图标之后。图标的点击效果不见了,What?什么东西啊?为什么。。。后来接着百度,发现也是可以解决的!怎么解决呢?要从设置图片说起了。。。首先设置的图片应该是一张select的就可以了,但是我运行了一下,图片点击后没有颜色的变化,到了美工那边一定会被打回来的!后来想到,既然图片可以,那么设置tint的时候应该也是可以的吧?尝试了一下还真好使!窃喜。。。
图片的select(对应下面的select_pwd_visible)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/ic_blur_on_white_48dp" android:state_checked="true" />
<item android:drawable="@mipmap/ic_blur_off_white_48dp" android:state_checked="false" />
</selector>
颜色的select(对应下面的select_tint_visible)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_checked="true" />
<item android:color="@color/colorPrimaryDark" android:state_checked="false" />
</selector>
属性里面的设置
app:passwordToggleTint="@drawable/select_tint_visible"
app:passwordToggleDrawable="@drawable/select_pwd_visible"
这里个人觉得图片还是用48的比较适合,小于48的我试了效果比较小!还是要看自己喜欢了,如果你非喜欢大的我也没办法!
问题3:
我们美工总说,这个粉色不适合我,我喜欢金属质感的,改去吧!我心想你还不喜欢我呢?我说什么了。。。
好吧我去改。。。其实大家注意到没有凡是有app:xxxAppearance
都是可以改变文字状态的属性,感觉一般都是,所以一定是从这里下手!
app:hintTextAppearance="@style/hintAppearance"
<style name="hintAppearance" parent="TextAppearance.AppCompat">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#ffee00</item>
</style>
同样的原理你可以改变每一处的内容。如果你想改变整体的(这里指的是整体的颜色,你可以自定义一个主题,千万别直接去改Base的主题,会被打死的!相信我。。。)
<style name="你的主题名称" parent="AppTheme">
<item name="colorAccent">@color/colorAccent</item>
</style>
改成你喜欢的颜色就好了,然后让你的acivity直接使用这个主题就好了,其实这里的AppTheme你可以换成你们项目里的AppTheme就ok了!
问题4:
这个问题我要是说你试试就知道了,你会不会打我啊?当你两个同时设置的时候,两个会重叠放在那里,会导致动画执行了,横杠上还有文字!剩下的就自己体会吧!
4. TextInputLayout和TextInputEdittext的一些常见操作?
为什么我看见别人的TextInputLayout和TextInputEdittext下面有错误的提示!
你也可以有的,说一下一般都怎么做,因为TextInputEdittext是继承EditText的,所以像一些监听都是通用的,都是监听文字变化的时候,如果超出规定的位数的时候就使用
setError("XXX");
就能显示相应的错误了,当你位数正确的时候,你就可以setError("");
设置一下了!有的比较刁钻的产品说,用户对了也需要提示,但是颜色需要改变,其实你还是可以用这个API,只是动态的改变一下相应的setErrorTextAppearance(int)
也就可以了
特别说明一个问题:上面介绍属性的时候,最后两个属性可能有人会忘,千万别忘了,要不美工会来找你的!
关于图片就不再这里再上了,感兴趣的童鞋,可以去我的github上下载一下看,所有的内容我都写上了,应该不用去下载的!好了今天就到这里吧!希望各位看官满意!!!
我的QQ号:753355530 加我的是否对好暗号笔墨Android哦!