textinputedittext style studio propiedades personalizar example edittext android android-edittext android-styles

android - style - textinputedittext



Establecer el color del cursor de EditText (15)

Estoy teniendo este problema donde estoy usando 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 componente EditText en este fragmento. He intentado anular el tema estableciendo el fondo de los recursos del tema Holo.Light. Sin embargo, mi cursor de texto (quilates) permanece blanco y, por lo tanto, invisible en la pantalla (puedo verlo 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 del EditText en "@android:style/Widget.Holo.Light.EditText" sin resultados positivos.


En diseño

<EditText android:layout_width="match_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>

Tienes un cursor de color blanco en la propiedad EditText.


Encontré la respuesta :)

He establecido el estilo de edición del tema en:

<item name="android:editTextStyle">@style/myEditText</item>

Luego he usado el siguiente dibujo para configurar 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í.


Es incluso más fácil que eso.

<style name="MyTextStyle"> <item name="android:textCursorDrawable">#000000</item> </style>

Esto funciona en ICS y más allá. No lo he probado en otras versiones.


Establecer el atributo android:textCursorDrawable en @null debería 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


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 de su aplicación o actividades.

Actualización : de esta manera solo funciona en API 21+
Actualización 2 : No estoy seguro de la versión mínima de Android que puede funcionar.
Probado por la versión de Android:

2.3.7 - didn''t work 4.4.4 - worked 5.0 - worked 5.1 - worked


La única respuesta válida debe ser cambiar el tema de la actividad: <item name="colorAccent">#000000</item> No debes usar android:textCursorDrawable para @null porque esto solo concierne al cursor en sí, pero no al pin debajo del cursor si quieres arrastrar ese cursor. La solución temática es la más seria.


Para cualquier persona que necesite establecer el color del cursor de EditText 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 el ID de recurso dibujable del cursor en el dibujo 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 cambiar simplemente el color del cursor por defecto, 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) { } }


Para mí modifiqué tanto el AppTheme como un valor colors.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>

Aquí está el colors.xml

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="yellow">#B7EC2A</color> </resources>

Saqué el atributo android: textCursorDrawable a @null que coloqué dentro del estilo editText. Cuando intenté usar esto, los colores no cambiarían.


Parece como si todas las respuestas fueran alrededor de los arbustos.

En su EditText , use la propiedad:

android:textCursorDrawable="@drawable/black_cursor"

y agregue el 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 manera de crear cursores más diversos, si es necesario.


Tarde a la fiesta, aquí está mi respuesta,

Esto es para las personas que no buscan cambiar el colorAccent en su tema principal, ¡pero quieren cambiar los atributos de EditText !

Esta respuesta demuestra cómo cambiar ......

  1. Color de linea de fondo
  2. Color del cursor
  3. Color del puntero del cursor (utilicé mi imagen personalizada) .......... de EditText usando el estilo aplicado al tema de la 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 edit_text_background ( edit_text_background ) agrega un recurso xml para el fondo. ¡Puedes personalizarlo como quieras!

<?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 lo hizo, establezca este estilo en su tema de actividad.

Ejemplo:

En tu Actividad tienes un tema, configura este tema personalizado de editText para eso.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Your Theme data --> <item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this </style>


Wow, realmente llego tarde a esta fiesta, pero ha tenido actividad hace 17 días. Tendríamos que considerar la posibilidad de publicar la versión de Android que estamos usando para obtener una respuesta, de modo que esta respuesta funciona con Android 2.1 y versiones posteriores. Ir a RES / VALUES / ESTILOS y agregue las líneas de código a continuación y su cursor será negro

<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>

Necesitará esta línea de código en su carpeta RES / COLOR

<color name="color_Black">#000000</color>

¿Por qué publicar esta tarde? ¡Podría ser bueno considerar alguna forma de categorías para los muchos monstruos con cabeza que se ha convertido Android!


utilizar esta

android: textCursorDrawable = "@ color / white"


editcolor.xml

android:textCursorDrawable="@drawable/editcolor"

En el archivo xml, establecer el código de color del color de fondo del edittext de edittext


<!-- 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" />

Cambie el color de colorAccent en styles.xm, así de simple.


Edittext cursor color you want changes your color. <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:textCursorDrawable="@drawable/color_cursor" />

Luego crea un xml color_cursor : 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>