美文网首页
TextInputLayout使用以及自定义颜色

TextInputLayout使用以及自定义颜色

作者: NeWolf | 来源:发表于2017-06-27 17:57 被阅读0次

    本文转载自:http://blog.csdn.net/android_freshman/article/details/51136657

    版权声明:本文为博主原创文章,转载请注明出处。

    目录(?)[+]

    继CoordinatorLayout之后,继续研究 material design 的相关控件TextInputLayout,下面是效果图:

    1.gradle 配置

    compile ‘com.Android.support:design:22.2.0’

    compile ‘com.android.support:appcompat-v7:22.2.0’

    2.xml

    privateandroid.widget.LinearLayout.LayoutParamssetEditText(EditText editText,  LayoutParams lp) {if(this.mEditText !=null) {thrownewIllegalArgumentException("We already have an EditText, can only    have one");        }else{            .......            .....

    1

    2

    3

    4

    5

    6

    7

    1

    2

    3

    4

    5

    6

    7

    注意点:部分源代码中的内容 ,TextInputLayout 继承LinearLayout 且里面只能有一个editEditText,和scrollView 很像。下面是布局文件:

                                                   

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    3.java

    注意:不能 重写 TextInputLayout的OnFocusChangeListener的监听事件,因为在源代码中定义了动画效果和editText注入,重写了会导致动画失效。

    设置 浮动标签动画效果

    titleTextInput.setHint(“Title”);

    if(titleEditText.getText().toString().length()<6){  titleTextInput.setErrorEnabled(true);  titleTextInput.setError("title length must >= 6");}else{  titleTextInput.setErrorEnabled(false);}

    1

    2

    3

    4

    5

    6

    1

    2

    3

    4

    5

    6

    这一部分是动态错误提示的相关代码

    完成上面的,基本就可以出现TextInputLayout 的动画效果了,但是默认的颜色不是很好看,所以我们需要自定义相关的颜色,比如 hint 字的颜色,下划线的颜色,错误字体的颜色大小等,下面就是自定义颜色的部分:

    谷歌把Design Support Library写的很好。每一个控件的颜色都是直接通过主题颜色绘制的,在 style.xml 中指定。打开它添加colorAccent 到主题以改变表单的颜色。在 style.xml 中修改相关的属性

            @color/primary        @color/primary_dark        #3498db-->        @color/alpha_white        @color/alpha_white        @color/white        @color/white        true   

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    2.1 colorAccent 是什么意思,哪里的颜色

    这张图片基本说明了colorAccent 代表的颜色,而在google 的官网上:

    https://www.google.com/design/spec/style/color.html#color-color-schemes也有相关的说明

    2.2 其他相关颜色的说明

    android:textColorHint 代表 hint 的颜色

    colorControlNormal 代表 下划线没有获取焦点的颜色

    colorControlActivated,colorControlHighlight 代表了获取焦点或者点击的时候 下划线 的颜色

    2.3 错误提示的颜色说明:

    默认的错误提示的颜色是红色:在这种背景色下面,红色不是很好看,所以需要自定义颜色

    在设置布局的时候errorTextAppearance这个属性,自定义style 写颜色和大小就可以了,至于另一个属性hintTextAppearance 这个属性修改颜色,好像没有什么效果,不起作用。

    修改之后的效果,如下图:有的机器上面可能没有效果,下面提供一种解决方案:

    publicstaticvoidsetErrorTextColor(TextInputLayout textInputLayout,intcolor) {try{            Field fErrorView = TextInputLayout.class.getDeclaredField("mErrorView");            fErrorView.setAccessible(true);            TextView mErrorView = (TextView) fErrorView.get(textInputLayout);            Field fCurTextColor = TextView.class.getDeclaredField("mCurTextColor");            fCurTextColor.setAccessible(true);            fCurTextColor.set(mErrorView, color);        }catch(Exception e) {            e.printStackTrace();        }    }

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    需要注意的是:

    setErrorTextColor(titleTextInput,getResources().getColor(R.color.grey));

    需要在titleTextInput.setErrorEnabled(true);之前调用

    这个是 material design 的说明文档,收藏记录下:

    https://www.google.com/design/spec/components/text-fields.html#text-fields-multi-line-text-field

    相关文章

      网友评论

          本文标题: TextInputLayout使用以及自定义颜色

          本文链接:https://www.haomeiwen.com/subject/zbiecxtx.html