MaterialDesign系列文章(十)TextInputLayout和TextInputEdittext

最近看见我的文章被很多人喜欢,这里先谢谢大家了!感谢你对我写作的认可。

我叫 笔墨Android ,希望大家记得!哈哈。。。写关于MD文章已经有10篇了,坚持真是一个很神奇的东西!不知不觉已经更新10篇文章了。这段时间自己的只是体系得到了提升,还结交到了很多朋友。感觉挺值的!如果我的文章有什么问题,希望你及时提出来,我会尽早的给你一个交代的!文末我会把我的QQ号奉上的,有问题找我哦!!!

本文知识点:

  • 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哦!

猜你喜欢

转载自juejin.im/post/5afa8b63f265da0b8f62b302
今日推荐