Comment puis-je changer la couleur du curseur EditText's
par programme?
Dans Android 4.0 et les versions ultérieures, la couleur du curseur est blanche. et si le fond EditText
s est également blanc, il devient invisible.
Comment puis-je changer la couleur du curseur EditText's
par programme?
Dans Android 4.0 et les versions ultérieures, la couleur du curseur est blanche. et si le fond EditText
s est également blanc, il devient invisible.
Dans vos propriétés EditText, il existe un attribut android:textCursorDrawable
Maintenant, réglez-le sur @null comme,
android:textCursorDrawable="@null"
Alors maintenant, votre curseur EditText est identique à votre EditText TextColor.
Référence à partir de la couleur du curseur EditText
J'ai trouvé un moyen de résoudre ce problème. Il n'est pas la meilleure solution, mais il fonctionne.
Malheureusement, je ne peux utiliser la couleur statique pour le curseur de la couleur.
Tout d'abord, je définir un curseur noir dans drawable
<?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>
Ensuite, j'ai définit un échantillon EditText dans les mises en page.
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textCursorDrawable="@drawable/blackpipe"
>
</EditText>
Lorsque je veux créer un EditText au moment de l'exécution, j'utilise ceci:
AttributeSet editText30AttributeSet = null;
int res = getResources().getIdentifier("edit30", "layout", getPackageName());//edit30 is EditText layout
XmlPullParser parser = getResources().getXml(res);
int state=0;
do {
try {
state = parser.next();
} catch (Exception e1) {
e1.printStackTrace();
}
if (state == XmlPullParser.START_TAG) {
if (parser.getName().equals("EditText")) {
editText30AttributeSet = Xml.asAttributeSet(parser);
break;
}
}
} while(state != XmlPullParser.END_DOCUMENT);
EditText view = new EditText(getContext(),editText30AttributeSet);
Maintenant, vous avez un EditText vue qui a un curseur noir. Peut-être quelqu'un peut améliorer ma solution, de sorte que le curseur peut être modifiée lors de l'exécution.
Voici, à mon avis, une meilleure solution que celle publiée par @Adem.
Java:
try {
// https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564
Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
f.setAccessible(true);
f.set(yourEditText, R.drawable.cursor);
} catch (Exception ignored) {
}
XML:
<?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>
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.