96

テキスト フィールドの下に表示されるように設定できるエラー メッセージの色を変更するにはどうすればよいですかTextInputLayout(経由setError(...)-ここでエラー状態を参照)。

通常は赤色で表示されますが、これを変更したいと考えています。styles.xml色をターゲットにするには、ファイルでどのアイテム名/キーを使用する必要がありますか?

前もって感謝します。


編集:

app:errorTextAppearancemy にキーを追加しましたTextInputLayout:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:id="@+id/welcome_current_week_container"
        app:errorTextAppearance="@style/WelcomeErrorAppearance">
        <EditText
            ..../>
    </android.support.design.widget.TextInputLayout>
</LinearLayout>

およびエラーの外観(テスト用に緑色に設定) :

<style name="WelcomeErrorAppearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">@android:color/holo_green_dark</item>
</style>

その結果、ヒントとエラー メッセージが色付けされます(スケーリングされた Android Emulator のスクリーンショット)

通常 (エラーなし):

前の画像

エラー状態:

アフターイメージ

編集 2/結果:

エラー メッセージが表示されると、フィールドの上のヒントがエラー メッセージと同じ色に変わり、ヒントの色が上書きされます。これは仕様によるものです。

4

9 に答える 9

6

これを動的に行う必要がありました。リフレクションの使用:

public static void setErrorTextColor(TextInputLayout textInputLayout, int color) {
  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();
  }
}

textInputLayout.setErrorEnabled(true)これを機能させるには、上記のメソッドを呼び出す前に呼び出す必要があります。

于 2016-01-12T19:52:55.180 に答える
-2

TextInputLayout のソースを調べたところ、colors.xml からエラー テキストの色が取得されていることがわかりました。これを colors.xml に追加するだけです:

<color name="design_textinput_error_color_light" tools:override="true">your hex color</color>
于 2016-07-01T17:14:18.813 に答える