Wie kann ich die Farbe der Fehlermeldung ändern, die so eingestellt werden kann, dass sie unter dem Textfeld in einem TextInputLayout
angezeigt wird (via setError(...)
- siehe Fehlerstatus hier )?
Es zeigt sich normalerweise als rote Farbe, die ich ändern möchte. Welche Artikelnamen / Schlüssel sollte ich in meiner styles.xml
Datei verwenden, um die Farbe zu bestimmen?
Danke im Voraus.
Bearbeiten:
app:errorTextAppearance
Schlüssel zu meinem hinzugefügt 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>
und das Auftreten des Fehlers (zum Testen auf grün gesetzt) :
<style name="WelcomeErrorAppearance" parent="@android:style/TextAppearance">
<item name="android:textColor">@android:color/holo_green_dark</item>
</style>
Das Ergebnis ist, dass sowohl der Hinweis als auch die Fehlermeldung farbig sind (Screenshots vom skalierten Android Emulator) :
Normal (kein Fehler):
Fehlerstatus:
Bearbeiten 2 / Ergebnis:
Wenn die Fehlermeldung angezeigt wird, ändert sich der Hinweis über dem Feld in dieselbe Farbe wie die Fehlermeldung und überschreibt die Hinweisfarbe - dies ist beabsichtigt.
quelle
Antworten:
Erstellen Sie einen benutzerdefinierten Stil, der
@android:style/TextAppearance
als übergeordnetes Element in Ihrerstyles.xml
Datei verwendet wird:Und verwenden Sie es in Ihrem TextInputLayout-Widget:
Edit: Stellen Sie den Hinweis auf das Objekt, das in Ihrem TextInputLayout ist (
EditText
,TextView
usw.) verschiedene Farben für den Hinweis und den Fehler zu halten.quelle
app:errorTextAppearance
?<android.support.design.widget.TextInputLayout app:errorTextAppearance="@style/error_appearance"><AutoCompleteTextView android:hint="@string/prompt_email"/></android.support.design.widget.TextInputLayout>
. Ja, es ist eine andere Textansicht, deshalb wird die Fehlerfarbe nicht aus dem TextInputLayout übernommen.parent
auf einparent="TextAppearance.Design.Error"
. Auf diese Weise bleiben die Standardtextgröße und alle anderen Attribute erhalten. Sie können jedoch die Fehlerfarbe, die das Ziel der vorliegenden Frage war, speziell anpassen.Eigentlich nur die Fehlermeldung Farbe zu ändern, können Sie einstellen ,
textColorError
in Ihrem Thema (und auch festgelegtcolorControlNormal
undcolorControlActivated
für die allgemeine Widget und Hinweistext Farbe).TextInputLayout
nimmt dieses Attribut auf. HINWEIS: Wenn SieerrorTextAppearance
einen benutzerdefinierten Stil festlegen ,textColorError
hat dies keine Auswirkungen.Und in Ihrer AndroidManifest.xml:
quelle
textColorError
nicht gefunden), aber ich konnte dascolorError
Attribut in meinem Thema festlegen . Anscheinend hat jede Version von Android / Support Library ihre eigenen Themenattribute.<item name="colorError">@color/error</item>
funktioniert gutEine Randnotiz. Ich habe die akzeptierte Lösung mit ausprobiert
errorTextAppereance
. Es funktioniert wirklich gut, aber zuerst änderte sich die Farbe der eingegebenen Unterstreichung nicht, nachdem ein neuererrorTextAppereance
Stil angewendet wurde. Ich sehe, dass es einige Kommentare gibt und dass andere Leute das gleiche Problem haben.In meinem Fall geschah dies, als ich nach dem Festlegen eines neuen Fehlertextes einen neuen Stil festlegte. So was:
Nach dem Ändern der Reihenfolge dieser beiden Methoden ändert sich die Text- und Unterstreichungsfarbe wie erwartet.
Und der Fehlertext-Darstellungsstil sieht ungefähr so aus:
quelle
Ich musste das dynamisch machen. Reflexion verwenden:
Sie müssen aufrufen,
textInputLayout.setErrorEnabled(true)
bevor Sie die obige Methode aufrufen, damit dies funktioniert.quelle
Verwenden Sie mit dem
TextInputLayout
in der Material Components Library enthaltenenapp:errorTextColor
Attribut einfach das Attribut.In einem benutzerdefinierten Stil können Sie Folgendes verwenden:
quelle
AKTUALISIEREN
Eine modifizierte Version von @ jareds Antwort, die in meinem Fall funktioniert:
quelle
Wenn Sie com.google.android.material.textfield.TextInputLayout dieses Eingabelayouts verwenden, legen Sie nur einen Stil fest
quelle
Je nach Bedarf kann die Textfarbe von TextInputLayout dynamisch oder direkt in der Layout-XML-Datei geändert / festgelegt werden. Unten finden Sie Beispielcode-Schnipsel
Erstellen Sie einen benutzerdefinierten Stil, der @android: style / TextAppearance als übergeordnetes Element in Ihrer Datei styles.xml verwendet:
Verwenden Sie es in Ihrem TextInputLayout-Widget:
Wenn Sie eine einzelne / dieselbe Fehlertextfarbe für Ihre Anwendung festlegen möchten, definieren Sie die Textfarbe in Ihrem App-Design
Und in Ihrer AndroidManifest.xml:
quelle
Ich habe in die TextInputLayout-Quelle geschaut und festgestellt, dass die Farbe des Fehlertextes aus color.xml stammt. Fügen Sie dies einfach Ihrer colours.xml hinzu:
quelle