TextInputLayout 的主题颜色修改

关于TextInputLayout 类的问题,在androidx 里面是不带这个类型的,需要导入依赖

implementation 'com.google.android.material:material:1.0.0'

使用:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/text_account"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/TextInputLayoutTheme"
    app:hintTextAppearance="@style/TextInputLayoutTheme"  //提示语的样式
    app:errorTextAppearance="@style/TextInputLayouteErrMsg" //错误提示的样式
    >
    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="numberPassword"
        android:imeOptions="actionDone"
        android:lines="1"
        android:singleLine="true"
        android:hint="@string/please_enter_password"
        />
</com.google.android.material.textfield.TextInputLayout>

使用与TextInputEditText 结合,实现丝滑的用户体验,当Editext的获取焦点之后,hint自动会在上面提示,增强了用户的体验度。

但是这么炫酷的效果,那么头疼的是TextInputLayout 的hint文字,和底线颜色应该怎么修改呢?

请注意上面代码的红色部分,非常关键! 我们在修改TextInputLayout 的时候,一定要记得去修改Theme 而不是style. 

当第一个TextInputLayout 的EditText 获取焦点时,文字和颜色使用的是Theme

android:theme="@style/TextInputLayoutTheme"

    <style name="TextInputLayoutTheme" >
        <item name="android:textColor">@color/colorPrimaryDark</item>
<!--        <item name="android:textSize">16sp</item>-->
        <!-- 底部线 默认颜色 -->
        <item name="colorControlNormal">@color/colorPrimaryDark</item>
        <!-- 底部线 EditText激活时颜色 -->
        <item name="colorControlActivated">@color/colorAccent</item>
    </style>

当点击登陆的时候,对第一个输入框进行非空判断,则表现为

app:errorTextAppearance="@style/TextInputLayouteErrMsg"

扫描二维码关注公众号,回复: 17105339 查看本文章

因为我们在代码中的展现形式是 error,见下文

text_account.setError("账号不能为空");

至此,大家可以随意适配各种颜色了,再也不担心产品姐姐提bug了。。。。。

猜你喜欢

转载自blog.csdn.net/chenluming210/article/details/117707649