
cena
Tengo este problema en el que uso el tema Holo de Android en un proyecto de tableta. Sin embargo, tengo un fragmento en pantalla que tiene un fondo blanco. estoy agregando un EditText
componente de este fragmento. Intenté anular el tema configurando el fondo de los recursos del tema Holo.Light. Sin embargo, mi cursor de texto (carat) permanece blanco y, por lo tanto, invisible en la pantalla (puedo detectarlo débilmente en el campo de edición de texto …).
¿Alguien sabe cómo puedo hacer que EditText use un color de cursor más oscuro? He intentado establecer el estilo de EditText en "@android:style/Widget.Holo.Light.EditText"
sin resultado positivo.

Decano
Configuración de la android:textCursorDrawable
atribuir a @null
debe resultar en el uso de android:textColor
como el color del cursor.
El atributo “textCursorDrawable” está disponible en el nivel de API 12 y superior

DPP
En Diseño
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textCursorDrawable="@drawable/color_cursor"
/>
Luego crea un xml dibujable: 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>
Tiene un cursor de color blanco en la propiedad EditText.

Zach-M
Parece como si todas las respuestas andaran por los arbustos.
En tus EditText
usa la propiedad:
android:textCursorDrawable="@drawable/black_cursor"
y agrega el dibujable black_cursor.xml
a sus recursos, de la siguiente manera:
<?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>
Esta es también la forma de crear cursores más diversos, si es necesario.

ductrán
Hay una nueva forma de cambiar el color del cursor en la última Appcompact
v21
solo cambia colorAccent
en estilo como este:
<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>
Luego aplique este estilo en el tema o las actividades de su aplicación.
Actualizar: de esta manera solo funciona en API 21+
Actualización 2: No estoy seguro de la versión mínima de Android que pueda funcionar.
Probado por la versión de Android:
2.3.7 - didn't work
4.4.4 - worked
5.0 - worked
5.1 - worked

cena
Encontré la respuesta 🙂
Configuré el estilo editText del tema en:
<item name="android:editTextStyle">@style/myEditText</item>
Luego he usado el siguiente dibujable para establecer el cursor:
`
<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 es la clave aquí.

pevik
Para cualquier persona que necesite configurar el EditText
color del cursor de forma dinámica, a continuación encontrará dos formas de lograrlo.
Primero, crea tu cursor dibujable:
<?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>
Establezca la identificación del recurso dibujable del cursor en el dibujable que creó (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) {
}
Para simplemente cambiar el color del cursor predeterminado dibujable, puede usar el siguiente método:
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) {
}
}
Tarde a la fiesta, aquí está mi respuesta,
Esto es para las personas que están no buscando cambiar el colorAccent
en su tema principal, pero quiere cambiar EditText
atributos!
Esta respuesta demuestra cómo cambiar ……
- color de fondo
- color de los cursores
- Color del puntero del cursor (utilicé mi imagen personalizada)………. de
EditText
usando el estilo aplicado al tema Actividad.

<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hey" />
Ejemplo:
<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>
Ahora crea un dibujable (edit_text_background
) agregue un recurso xml para el fondo. ¡Puede personalizarlo como desee!
<?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>
Ahora, como configuró este estilo en su tema de Actividad.
Ejemplo :
En tu actividad tienes un tema, establece este personalizado editText
tema a eso.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Your Theme data -->
<item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
</style>