Mettre la couleur du curseur EditText
j'ai ce problème où j'utilise le thème Holo de L'Android sur un projet de tablette. Cependant, j'ai un fragment sur l'écran qui a un fond blanc. J'ajoute un composant EditText
sur ce fragment. J'ai essayé de contourner le thème en plaçant le fond du Holo.La lumière du thème de ressources. Cependant, mon curseur texte (carat) reste blanc et donc invisible à l'écran (je peux le repérer légèrement dans le champ edittext)..).
est-ce que quelqu'un sait comment je peux obtenir EditText pour utiliser une couleur de curseur plus sombre? J'ai essayé de définir le style de l'EditText "@android:style/Widget.Holo.Light.EditText"
, sans résultat positif.
15 réponses
le fait de définir l'attribut android:textCursorDrawable
à @null
devrait se traduire par l'utilisation de android:textColor
comme couleur du curseur.
Attribut "textCursorDrawable" est disponible dans l'API de niveau 12, et plus
Dans La Mise En Page
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textCursorDrawable="@drawable/color_cursor"
/>
puis créer XML dessiner: color_cursor
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:width="3dp" />
<solid android:color="#FFFFFF" />
</shape>
vous avez un curseur de couleur blanche sur la propriété EditText.
Il semble que toutes les réponses vont autour des buissons.
dans votre EditText
, utilisez la propriété:
android:textCursorDrawable="@drawable/black_cursor"
et ajouter le tirant black_cursor.xml
à vos ressources, comme suit:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<size android:width="1dp" />
<solid android:color="#000000"/>
</shape>
c'est aussi la façon de créer des curseurs plus divers, Si vous avez besoin.
il y a une nouvelle façon de changer la couleur du curseur dans le dernier Appcompact
v21
Il suffit de changer colorAccent
dans le style comme ceci:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">#088FC9</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#088FC9</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<!-- THIS IS WHAT YOU'RE LOOKING FOR -->
<item name="colorAccent">#0091BC</item>
</style>
alors appliquez ce style sur votre thème d'application ou vos activités.
mise à jour : cette façon ne fonctionne que sur API 21+
Maj 2 : Je ne suis pas sûr de la version android minimum qu'il peut fonctionner.
testé par la version android:
2.3.7 - didn't work
4.4.4 - worked
5.0 - worked
5.1 - worked
j'ai trouvé la réponse:)
j'ai mis le style editText du thème à:
<item name="android:editTextStyle">@style/myEditText</item>
J'ai utilisé le dessin suivant pour régler le curseur:
"
<style name="myEditText" parent="@android:style/Widget.Holo.Light.EditText">
<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>
</style>
"
android: textCursorDrawable est la clé ici.
pour tous ceux qui ont besoin de régler dynamiquement la couleur du curseur EditText
, vous trouverez ci-dessous deux façons d'y parvenir.
tout D'abord, créez votre curseur tirant:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#ff000000" />
<size android:width="1dp" />
</shape>
définissez le curseur de l'id de la ressource que vous avez créée (https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564">source)):
try {
Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
f.setAccessible(true);
f.set(yourEditText, R.drawable.cursor);
} catch (Exception ignored) {
}
pour changer simplement la couleur du curseur par défaut, vous pouvez utiliser la méthode suivante:
public static void setCursorDrawableColor(EditText editText, int color) {
try {
Field fCursorDrawableRes =
TextView.class.getDeclaredField("mCursorDrawableRes");
fCursorDrawableRes.setAccessible(true);
int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);
Field fEditor = TextView.class.getDeclaredField("mEditor");
fEditor.setAccessible(true);
Object editor = fEditor.get(editText);
Class<?> clazz = editor.getClass();
Field fCursorDrawable = clazz.getDeclaredField("mCursorDrawable");
fCursorDrawable.setAccessible(true);
Drawable[] drawables = new Drawable[2];
Resources res = editText.getContext().getResources();
drawables[0] = res.getDrawable(mCursorDrawableRes);
drawables[1] = res.getDrawable(mCursorDrawableRes);
drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN);
drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN);
fCursorDrawable.set(editor, drawables);
} catch (final Throwable ignored) {
}
}
la Fin de la partie,Ici, c'est ma réponse,
c'est pour les gens qui sont pas cherchant à changer le colorAccent
dans leur thème parent,mais veut changer EditText
attributs!
Cette réponse démos comment changer ......
- en Bas de la ligne de couleur
- Couleur du curseur
- couleur de pointeur de curseur (I utilisé mon image personnalisée).......... de
EditText
en utilisant le style appliqué au thème D'activité.
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hey" />
exemple:
<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText">
<item name="android:textColor">@color/white</item>
<item name="android:textColorHint">#8AFFFFFF</item>
<item name="android:background">@drawable/edit_text_background</item> // background (bottom line at this case)
<item name="android:textCursorDrawable">@color/white</item> // Cursor
<item name="android:textSelectHandle">@drawable/my_white_icon</item> // For pointer normal state and copy text state
<item name="android:textSelectHandleLeft">@drawable/my_white_icon</item>
<item name="android:textSelectHandleRight">@drawable/my_white_icon</item>
</style>
maintenant créer un drawable ( edit_text_background
) ajouter une ressource xml pour le fond!Vous pouvez personnaliser comme vous le souhaitez!
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="0dp"
android:left="-3dp"
android:right="-3dp"
android:top="-3dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/white"/>
</shape>
</item>
</layer-list>
maintenant comme vous avez mis ce style dans votre thème D'activité.
exemple:
dans votre activité vous avez un thème,mettez ce thème personnalisé editText
à cela.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Your Theme data -->
<item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
</style>
Edittext cursor color you want changes your color.
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textCursorDrawable="@drawable/color_cursor"
/>
puis créer drawalble xml: color_cursor
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:width="3dp" />
<solid android:color="#FFFFFF" />
</shape>
pour moi j'ai modifié à la fois L'Appthème et une valeur couleurs.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorControlNormal">@color/yellow</item>
<item name="colorAccent">@color/yellow</item>
</style>
Voici les couleurs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#B7EC2A</color>
</resources>
j'ai sorti l'attribut android:textCursorDrawable De @null que j'ai placé dans le style editText. Quand j'ai essayé de l'utiliser, les couleurs ne changeaient pas.
Wow je suis vraiment en retard à cette fête mais elle a eu de l'activité il y a 17 jours Il seam nous devons envisager de poster quelle version D'Android nous utilisons pour une réponse afin de Maintenant cette réponse fonctionne avec Android 2.1 et au-dessus Aller à RES / valeurs / STYLES et ajouter les lignes de code ci-dessous et votre curseur sera Noir
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!--<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">-->
<!-- Customize your theme here. -->
<item name="colorControlActivated">@color/color_Black</item>
<!--Sets COLOR for the Cursor in EditText -->
</style>
vous aurez besoin de cette ligne de code dans votre dossier RES / COLOR""
<color name="color_Black">#000000</color>
pourquoi poster Si tard ? Il pourrait être nice à considérer une certaine forme de catégories pour les nombreux Androïde monstre à la tête est devenu!
editcolor.xml
android:textCursorDrawable="@drawable/editcolor"
dans le code de couleur de l'ensemble de fichier xml de edittext
couleur de fond
c'est encore plus facile que ça.
<style name="MyTextStyle">
<item name="android:textCursorDrawable">#000000</item>
</style>
cela fonctionne dans ICS et au-delà. Je ne l'ai pas testé dans d'autres versions.
utiliser ce
android:textCursorDrawable="@couleur/blanc"
La seule réponse valable devrait être de modifier le thème de l'activité:
<item name="colorAccent">#000000</item>
Vous ne devez pas utiliser le android:textCursorDrawable
à @null
parce que cela ne concerne que le curseur lui-même mais pas le pin sous le curseur si vous voulez faire glisser ce curseur. La solution de thématisation est la plus sérieuse.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#36f0ff</item>
<item name="colorPrimaryDark">#007781</item>
<item name="colorAccent">#000</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
change la couleur de colorAccent dans les styles.xm, c'est tout simple