629 Stimmen

Legen Sie die Farbe des EditText-Cursors fest

Ich habe dieses Problem, bei dem ich das Android-Holo-Design in einem Tablet-Projekt verwende. Auf dem Bildschirm habe ich jedoch ein Fragment mit weißem Hintergrund. Ich füge ein EditText-Element zu diesem Fragment hinzu. Ich habe versucht, das Thema zu überschreiben, indem ich den Hintergrund der Ressourcen des Holo.Light-Themas festlege. Allerdings bleibt mein Textcursor weiß und daher auf dem Bildschirm unsichtbar (ich kann ihn schwach im Texteingabefeld erkennen..).

Weiß jemand, wie ich EditText dazu bringen kann, eine dunklere Cursorfarbe zu verwenden? Ich habe versucht, den Stil des EditText auf "@android:style/Widget.Holo.Light.EditText" zu setzen, aber ohne Erfolg.

2 Stimmen

Verwenden Sie einfach innerhalb Ihres TextEditText - android:textCursorDrawable="@color/your_color_choice"

1364voto

Dean Punkte 14418

Das Setzen des Attributs android:textCursorDrawable auf @null sollte dazu führen, dass android:textColor als Cursor-Farbe verwendet wird.

Das Attribut "textCursorDrawable" ist ab API-Level 12 verfügbar.

39 Stimmen

Oh Mann, das ist SO viel effizienter als eine drawable für den Cursor zu erzeugen, um ihn schwarz zu machen!! Ich liebe Android über alles, aber dies ist ein unglaublich schlechtes Standardverhalten... jemand muss wirklich dafür geschlagen werden.

29 Stimmen

Android 3.2 und höher .. ist schlecht

7 Stimmen

Obwohl, wenn du target >3.2 in deinem Manifest hast, kannst du es verwenden und es wird für niedrigere Versionen ignoriert.

621voto

DPP Punkte 12018

Im Layout

Dann erstellen Sie drawable xml: color_cursor

Sie haben einen weißen Farbcursor auf der EditText-Eigenschaft.

4 Stimmen

Das Attribut "textCursorDrawable" wird nur in der API-Ebene 12 und höher verwendet.

92 Stimmen

Das ist die korrekte Antwort. Ich bin mir nicht sicher, warum so viele Leute da draußen denken, dass das Setzen des Cursors auf "@null" eine gute Idee ist.

1 Stimmen

Oben Antwort, setzen Sie textCursorDrawable als @null Ergebnisse sehen gut aus, aber die Orientierung des Cursors macht keinen Sinn, jedoch funktioniert diese Antwort wirklich großartig. Wirklich Vielen Dank

94voto

Zach-M Punkte 1947

Es sieht so aus, als ob alle Antworten um den heißen Brei herumgehen.

In Ihrem EditText verwenden Sie die Eigenschaft:

android:textCursorDrawable="@drawable/black_cursor"

und fügen Sie die drawable black_cursor.xml zu Ihren Ressourcen hinzu, wie folgt:

Dies ist auch der Weg, um vielfältigere Cursor zu erstellen, falls benötigt.

3 Stimmen

Das funktioniert nicht auf Android 4.2 Jelly Bean... Der Cursor verschwindet, @null ist der richtige Weg.

0 Stimmen

@Edgar Das scheint für mich auf 4.2 JB auf der Designebene wunderbar zu funktionieren.

0 Stimmen

Android 4.2.2 funktioniert gut. Vergessen Sie nicht, in black_cursor.xml hinzuzufügen

80voto

ductran Punkte 9878

Es gibt eine neue Möglichkeit, die Cursorfarbe in den neuesten Appcompact v21 zu ändern.
Ändern Sie einfach colorAccent im Style wie folgt:

    <!-- Legen Sie Designfarben fest von http://www.google.com/design/spec/style/color.html#color-color-palette-->

    <!-- colorPrimary wird für den Standard-Action-Bar-Hintergrund verwendet -->
    <item name="colorPrimary">#088FC9</item>

    <!-- colorPrimaryDark wird für die Statusleiste verwendet -->
    <item name="colorPrimaryDark">#088FC9</item>

    <!-- colorAccent wird als Standardwert für colorControlActivated verwendet
         der zum Einfärben von Widgets verwendet wird -->
    <!-- DAS IST, WAS SIE SUCHEN -->
    <item name="colorAccent">#0091BC</item> 

Anschließend wenden Sie diesen Style auf Ihr App-Theme oder Ihre Aktivitäten an.

Aktualisierung: Auf API 21+ funktioniert dies nur
Aktualisierung 2: Ich bin mir nicht sicher, welche minimale Android-Version funktioniert.
Getestet anhand der Android-Versionen:

2.3.7 - hat nicht funktioniert
4.4.4 - hat funktioniert
5.0 - hat funktioniert
5.1 - hat funktioniert

2 Stimmen

Ich fürchte, die Antwort lautet nein. Ich habe es auf einem Gerät mit API 18 getestet und es funktioniert nicht.

1 Stimmen

An meinem Sony Xperia arbeiten. PreLollipop (4.4.4). Benutze auch die AppCompat-Bibliothek. :)

0 Stimmen

Funktioniert nicht für API 24/Android 7.0. colorAccent ändert z.B. die Linie am unteren Rand eines EditText, aber sie berührt nicht die tatsächliche Cursorfarbe. Oh, und natürlich gibt es kein "v21" mehr.

46voto

dineth Punkte 9582

Ich habe die Antwort gefunden :)

Ich habe den Stil des EditText des Themas auf:

@style/myEditText

festgelegt. Dann habe ich das folgende Zeichen verwendet, um den Cursor zu setzen:

`

    <item name="android:background">@android:drawable/editbox_background_normal</item>
    <item name="android:textCursorDrawable">@android:drawable/my_cursor_drawable</item>
    <item name="android:height">40sp</item>

`

android:textCursorDrawable ist hier der Schlüssel.

3 Stimmen

stackoverflow.com/questions/2658772/android-vertical-line-xm‌​l könnte für jeden nützlich sein, der einen Cursor zeichnen möchte, der nur eine vertikale Linie ist :)

1 Stimmen

Kannst du bitte sagen, wie wir die Cursorfarbe programmgesteuert setzen können?

0 Stimmen

Ich hatte ein Problem, als ich das Element android:editTextStyle benannt habe, aber als ich es zu editTextStyle geändert habe, wurde es behoben. Siehe stackoverflow.com/a/34010235/6744473

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X