TextInputLayout
Wie ändere ich in Bezug auf die neue Version von Google die Farbe des schwebenden Etikettentextes?
Einstellung colorControlNormal
, colorControlActivated
, colorControlHighLight
in verschiedenen Schnitten nicht hilft.
Das habe ich jetzt:
colorAccent
? Ich habe den benutzerdefinierten StilcolorAccent
in Schwarz geändert und die Linie würde immer noch das widerspiegeln, was ichcolorControlNormal
im Hauptstil habe.Antworten:
Versuchen Sie den folgenden Code, der im Normalzustand funktioniert
Im Stilordner TextLabel Code
Auf Hauptthema der App setzen, funktioniert es nur Hervorheben des Status
Aktualisieren:
Lösung
quelle
android.view.InflateException: Error inflating class TextView
android:theme
Stil aktivieren,TextInputLayout
führt dies zuInflateException
Abstürzen auf ASUS Zenphones (und möglicherweise anderen Geräten).ThemeOverlay.AppCompat.Light
Lösung des Absturzes auf meinem ASUS Zenphone (@friederbluemle)quelle
android:textColorHint="@color/gray" //support 23.0.0
machte meine Hinweistextfarbe sichtbar (die Hinweistextfarbe war standardmäßig schwarz, unabhängig von der von mir festgelegten Hinweistextfarbe, und wenn der Hintergrund schwarz ist, ist der Text vollständig ausgeblendetWenn Sie die Antwort gefunden haben, verwenden Sie das
android.support.design:hintTextAppearance
Attribut, um Ihr eigenes Erscheinungsbild für schwebende Etiketten festzulegen.Beispiel:
quelle
Namespace 'android.support.design' not bound
. Irgendwelche Vorschläge?compile 'com.android.support:design:23.1.1'
zu Ihrer App Gradle-Datei hinzufügenSie müssen
android:theme="@style/TextInputLayoutTheme"
die schwebende Beschriftungsfarbe nicht verwenden, da sie sich auf das gesamte Thema für die kleine Textansicht auswirkt, die als Beschriftung verwendet wird. Stattdessen können Sie Folgendes verwendenapp:hintTextAppearance="@style/TextInputLayout.HintText"
:Lassen Sie mich wissen, ob die Lösung funktioniert :-)
quelle
Mit der Materialkomponentenbibliothek können Sie die
TextInputLayout
Farbe des Hinweistextes mithilfe von anpassen (es ist die Version 1.1.0 erforderlich).Im Layout:
app:hintTextColor
Attribut: Die Farbe des Etiketts, wenn es reduziert ist und das Textfeld aktiv istandroid:textColorHint
Attribut: Die Farbe der Beschriftung in allen anderen Textfeldzuständen (z. B. Ruhezustand und Deaktiviert).Widget.MaterialComponents.TextInputLayout.*
:Die Standardauswahl für
android:textColorHint
ist:quelle
Ok, ich fand diese Antwort sehr hilfreich und danke allen, die dazu beigetragen haben. Nur um etwas hinzuzufügen. Die akzeptierte Antwort ist in der Tat die richtige Antwort ... ABER ... in meinem Fall wollte ich die Fehlermeldung unter dem
EditText
Widget mit implementierenapp:errorEnabled="true"
und diese einzelne Zeile machte mir das Leben schwer. Es scheint, dass dies das von mir gewählte Thema überschreibt, fürandroid.support.design.widget.TextInputLayout
das eine andere Textfarbe definiert istandroid:textColorPrimary
.Am Ende habe ich eine Textfarbe direkt auf das
EditText
Widget angewendet. Mein Code sieht ungefähr so aus:styles.xml
Und mein Widget:
Jetzt wird anstelle des
textColorPrimary
Weiß eine schwarze Textfarbe angezeigt .quelle
Ich schlage vor, Sie erstellen ein Stilthema für TextInputLayout und ändern nur die Akzentfarbe. Legen Sie das übergeordnete Element für Ihr App-Basisthema fest:
quelle
Verwendet in der neuesten Version der Unterstützungsbibliothek (23.0.0+)
TextInputLayout
das folgende Attribut in XML, um die Farbe der schwebenden Beschriftung zu bearbeiten:android:textColorHint="@color/white"
quelle
Anstelle der Antwort von Brahmam Yamani bevorzuge ich Widget.Design.TextInputLayout als übergeordnetes Element. Dadurch wird sichergestellt, dass alle erforderlichen Elemente vorhanden sind, auch wenn nicht alle Elemente überschrieben werden. In der Antwort von Yamanis stürzt die App mit einer nicht auflösbaren Ressource ab, wenn setErrorEnabled (true) aufgerufen wird.
Ändern Sie einfach den Stil wie folgt:
quelle
In meinem Fall habe ich dies "
app:hintTextAppearance="@color/colorPrimaryDark"
in meinem TextInputLayout-Widget hinzugefügt .quelle
error: '#FFFFFF' is incompatible with attribute hintTextAppearance
So ändern Sie die Farbe des Hinweises und bearbeiten die Farbe des unterstrichenen Textes: colorControlActivated
So ändern Sie die Farbe des Zeichenzählers: textColorSecondary
So ändern Sie die Farbe der Fehlermeldung: colorControlNormal
So ändern Sie den Farbton der Schaltfläche für die Kennwortsichtbarkeit: colorForeground
Weitere Informationen zu TextInputLayout finden Sie unter http://www.zoftino.com/android-textinputlayout-tutorial
quelle
Programmatisch können Sie verwenden:
Erklärung:
Holen Sie sich den int-Farbwert von einer Farbressource (eine Möglichkeit, die von Android verwendeten RGB-Farben darzustellen). Ich habe ColorEnabled geschrieben, aber für diese Antwort sollte es eigentlich ColorHintExpanded & ColorViewCollapsed sein. Auf jeden Fall ist dies die Farbe, die Sie sehen, wenn sich der Hinweis einer Ansicht "TextInputLayout" im Status "Erweitert" oder "Reduziert" befindet. Sie legen es fest, indem Sie das nächste Array für die Funktion "setDefaultHintTextColor" der Ansicht verwenden. Referenz: Referenz für TextInputLayout - Suchen Sie auf dieser Seite nach der Methode "setDefaultHintTextColor", um weitere Informationen zu erhalten
Wenn Sie sich die obigen Dokumente ansehen, können Sie sehen, dass die Funktionen die Farben für den erweiterten und reduzierten Hinweis mithilfe einer ColorStateList festlegen.
ColorStateList-Dokumente
Um die ColorStateList zu erstellen, habe ich zuerst eine Matrix mit den gewünschten Status erstellt, in meinem Fall state_enabled & state_disabled (die in TextInputLayout gleich Hint Expanded und Hint Collapsed sind [Ich erinnere mich nicht, in welcher Reihenfolge lol, jedenfalls habe ich sie gefunden mache nur einen Test]). Dann übergebe ich die Arrays mit int-Werten der Farbressourcen an den Konstruktor der ColorStateList. Diese Farben entsprechen der Zustandsmatrix (jedes Element im Farbarray entspricht dem jeweiligen Array in der Zustandsmatrix an derselben Position). Das erste Element des Farbarrays wird also als Farbe für jeden Status im ersten Array der Statusmatrix verwendet (in unserem Fall hat das Array nur 1 Element: enabled state = erweiterter Hinweisstatus für TextInputLayut). Letzte Dinge Zustände haben positive / negative Werte, und Sie haben nur die positiven Werte,
Hoffe das ist hilfreich. Tschüss, hab eine schöne Codierung (:
quelle
Sie sollten hier Ihre Farbe ändern
quelle
Jetzt einfach verwenden
colorAccent
undcolorPrimary
wird perfekt funktionieren.quelle
colorPrimary
das Thema übernommen, um die fokussierte Farbe des Hinweises und der unteren Zeile festzulegen . Obwohl es wirklich eine Erklärung / einen Code geben sollte, um es in dieser Antwort zu präsentierenIch löse das Problem. Dies ist Layout:
Das ist Stil:
Sie sollten Ihr Thema in der Anwendung verwenden:
quelle
um die Farbe der Textbeschriftung zu ändern, wenn Sie sich darauf konzentrieren. dh es eingeben. Sie müssen angeben hinzufügen
Nur eine Anmerkung: Sie müssen alle diese Implementierungen zu Ihrem Hauptthema hinzufügen.
quelle
Es funktioniert für mich ..... füge Hinweisfarbe in TextInputLayout hinzu
quelle
Ich habe versucht, android: textColorHint in der android.support.design.widget.TextInputLayout zu verwenden, es funktioniert gut.
quelle
füge dies zu Stilen hinzu und setze TextInputLayout Theam auf App2 und es wird funktionieren;)
quelle
res / values / styles.xml
quelle
Kann verwenden,
app:hintTextColor
wenn Sie verwendencom.google.android.material.textfield.TextInputLayout
, versuchen Sie diesquelle
Versuchen Sie den folgenden Code, der im Normalzustand funktioniert
Im Stilordner TextLabel Code
quelle
Aus der Dokumentation:
Also habe ich eingestellt
android:hint
undapp:hintTextColor
weiterTextInputLayout
, nicht weiterTextInputEditText
und es hat funktioniert.quelle
Da müssen Sie hinzufügen
colorControlNormal
,colorControlActivated
,colorControlHighLight
Artikel zum Hauptthema:quelle