Ich habe dieses Problem, bei dem ich das Holo-Thema von Android für ein Tablet-Projekt verwende. Ich habe jedoch ein Fragment auf dem Bildschirm, das einen weißen Hintergrund hat. Ich füge eine EditText
Komponente zu diesem Fragment hinzu. Ich habe versucht, das Thema zu überschreiben, indem ich den Hintergrund der Holo.Light-Themenressourcen festgelegt habe. Mein Textcursor (Karat) bleibt jedoch weiß und daher auf dem Bildschirm unsichtbar (ich kann ihn im Edittext-Feld schwach erkennen.).
Weiß jemand, wie ich EditText dazu bringen kann, eine dunklere Cursorfarbe zu verwenden? Ich habe versucht, den Stil des EditText "@android:style/Widget.Holo.Light.EditText"
ohne positives Ergebnis festzulegen .
target
> 3.2 in Ihrem Manifest haben, können Sie es verwenden und es wird für niedrigere Versionen ignoriertIm Layout
Erstellen Sie dann drawalble xml: color_cursor
Sie haben einen weißen Farbcursor auf der EditText-Eigenschaft.
quelle
Es scheint, als ob alle Antworten um die Büsche gehen.
EditText
Verwenden Sie in Ihrem die Eigenschaft:und fügen Sie das Drawable
black_cursor.xml
wie folgt zu Ihren Ressourcen hinzu:Auf diese Weise können Sie bei Bedarf auch verschiedene Cursor erstellen.
quelle
Es gibt eine neue Möglichkeit, die
Appcompact
Cursorfarbe in Version 21 zuändern. Ändern Sie einfach den
colorAccent
Stil wie folgt :Wenden Sie diesen Stil dann auf Ihr App-Thema oder Ihre Aktivitäten an.
Update : Auf diese Weise funktioniert es nur mit API 21+Update 2 : Ich bin nicht sicher, welche Android-Mindestversion es funktionieren kann.
Getestet von der Android-Version:
quelle
colorAccent
ändert zB die Linie am unteren Rand einesEditText
, berührt aber nicht die tatsächliche Cursorfarbe. Oh, und es gibt natürlich kein "v21" mehr.Ich habe die Antwort gefunden :)
Ich habe den editText-Stil des Themas auf Folgendes festgelegt:
Dann habe ich das folgende Zeichen verwendet, um den Cursor zu setzen:
`
`
android: textCursorDrawable ist hier der Schlüssel.
quelle
android:editTextStyle
, aber es änderte, um es zueditTextStyle
beheben. Siehe stackoverflow.com/a/34010235/6744473Für alle, die die
EditText
Cursorfarbe dynamisch einstellen müssen, finden Sie unten zwei Möglichkeiten, um dies zu erreichen.Erstellen Sie zunächst Ihren Cursor zum Zeichnen:
Setzen Sie die Cursor-Drawable-Ressourcen-ID auf das von Ihnen erstellte Drawable (https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564">source). ::
Um nur die Farbe des Standard-Cursors zu ändern, können Sie die folgende Methode verwenden:
quelle
AppCompatEditText
hat es schonsetSupportBackgroundTintList
, also wäre es nicht ziemlich einfach, so etwas hinzuzufügensetSupportCursorTintList
?Spät zur Party, hier ist meine Antwort:
Dies ist für Personen gedacht, die das übergeordnete Thema nicht ändern
colorAccent
möchten, aberEditText
Attribute ändern möchten!Beispiel:
Erstellen Sie jetzt eine drawable (
edit_text_background
) und fügen Sie eine Ressourcen-XML für den Hintergrund hinzu. Sie können sie nach Ihren Wünschen anpassen!Nun, da Sie diesen Stil in Ihrem Aktivitätsthema festgelegt haben.
Beispiel:
In Ihrer Aktivität haben Sie ein Thema, setzen Sie dieses benutzerdefinierte
editText
Thema darauf.quelle
<item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
keine Wirkungandroid:editTextSteyle
, richtig attr isteditTextStyle
<item name="android:textCursorDrawable">@color/white</item>
funktioniert nichtDann erstelle drawalble xml:
color_cursor
quelle
Für mich habe ich sowohl das AppTheme als auch einen Wert color.xml geändert
Hier ist die colours.xml
Ich habe das Attribut android: textCursorDrawable für @null entfernt, das ich im editText-Stil platziert habe. Wenn ich dies versuchte, änderten sich die Farben nicht.
quelle
Wow, ich bin sehr spät zu dieser Party, aber sie hatte vor 17 Tagen Aktivität. Es wäre naheliegend, dass wir überlegen müssten, welche Android-Version wir für eine Antwort verwenden. Ab sofort funktioniert diese Antwort mit Android 2.1 und höher. Gehe zu RES / VALUES / STYLES und fügen Sie die folgenden Codezeilen hinzu, und Ihr Cursor wird schwarz
Sie benötigen diese Codezeile in Ihrem RES / COLOR-Ordner
Warum so spät posten? Es könnte schön sein, eine Form von Kategorien für das vielköpfige Monster zu betrachten, zu dem Android geworden ist!
quelle
Hier @Jared Rummlers programmatische Version setCursorDrawableColor (), die auch für Android 9 Pie geeignet ist.
quelle
java.lang.NoSuchFieldException: No field mDrawableForCursor
auf Android 9.das heißt
colorAccent
in Android.Gehen Sie zu res -> values -> styles.xml add
wenn nicht vorhanden.
quelle
editcolor.xml
android:textCursorDrawable="@drawable/editcolor"
In der XML-Datei den Farbcode der
edittext
Hintergrundfarbe festlegenquelle
Die einzig gültige Antwort sollte darin bestehen, das Thema der Aktivität zu ändern:
<item name="colorAccent">#000000</item>
Sie sollten dasandroid:textCursorDrawable
to nicht verwenden ,@null
da dies nur den Cursor selbst betrifft, nicht jedoch den Stift unter dem Cursor, wenn Sie diesen Cursor ziehen möchten. Die Themenlösung ist die schwerwiegendste.quelle
Eine andere einfache Lösung wäre, in Ihrem Projektordner zu res> values> colours.xml zu gehen und den Wert des Farbakzents auf die gewünschte Farbe zu bearbeiten
Der obige Code ändert Ihren Cursor in Schwarz.
quelle
Gehen Sie zu styles.xml und ändern Sie den Farbakzent. Dies beeinflusst den Cursor aus dem Edittext-Feld
quelle
Es ist noch einfacher als das.
Dies funktioniert in ICS und darüber hinaus. Ich habe es nicht in anderen Versionen getestet.
quelle
Wenn Sie eine bestimmte Farbe wünschen, müssen Sie AppCompatEditText verwenden und dann den Hintergrund auf null setzen
funktioniert bei mir
Sehen Sie diesen Kern
quelle
Benutze das
quelle
Achten Sie auf Ihren colorAccent in Ihrer aktuellen Aktivität / Fragment / Dialog, definiert in Stile ...;) Die Cursorfarbe hängt damit zusammen.
quelle
Ändern Sie die Farbe von colorAccent in styles.xm, das ist ganz einfach
quelle
Wenn Sie Stil verwenden und implementieren
Ersetzen Sie den anderen Wert als Farbe / Weiß.
quelle
Sie können den folgenden Code im Layout verwenden
quelle
Nachdem ich viel Zeit damit verbracht hatte, all diese Techniken in einem Dialog auszuprobieren, kam mir endlich die Idee: Hängen Sie das Thema an den Dialog selbst und nicht an das TextInputLayout an.
in onCreate:
öffentliche Klasse myDialog erweitert Dialog {
Prost :)
quelle