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 と組み合わせて使用​​すると、スムーズなユーザー エクスペリエンスを実現できます。Edittext にフォーカスがあると、ヒントが自動的に表示され、ユーザー エクスペリエンスが向上します。

しかし、これほど素晴らしい効果があるのですが、最も面倒なことは、TextInputLayout のヒント テキストと最後の行の色を変更する方法です。

上記のコードの赤い部分に注意してください。これは非常に重要です! TextInputLayout を変更するときは、スタイルではなくテーマを変更することを忘れないでください。 

最初の TextInputLayout の EditText がフォーカスを取得すると、テキストと色にテーマが使用されます

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"

コード内の表示フォームがエラーになっているため、以下を参照してください。

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

この時点で、誰もが自由にさまざまな色に適応できるようになり、製品姉妹が引き起こすバグを心配する必要はなくなりました。

 

おすすめ

転載: blog.csdn.net/chenluming210/article/details/117707649