Cómo cambiar el color / apariencia de EditText select handle / anchor?
Así que cambié el estilo del tema de Holo con el generador de colores de Holo y el generador de estilo de barra de acción a mi propio color. Pero cuando selecciono texto dentro de un texto de edición, los "marcadores" en las posiciones seleccionadas siguen siendo de color azul. ¿Cómo puedo cambiarlo?
- No se puede cambiar el tema Appcompat de luz a holo oscuro
- Cómo conseguir que el tema de Holo Light funcione en mi aplicación Xamarin
- Adición de una barra de acción a Theme.Black.NoTitleBar Android
- Grueso ProgressBar de color naranja en lugar de azul delgado
- Barra de acción oscura con Theme.AppCompat
- Personalizar el relleno de las pestañas de ActionBar
- Android: Conjunto de cuentas Juego de luz
- Layout_width y layout_height no se está aplicando a edittext desde el tema
- ActionBarSherlock - Estilo contiene clave con entrada incorrecta
- ¿Cómo cambio el color del ProgressDialog?
- Cómo cambiar el color de texto del botón de Android de forma global en el tema
- ActionBarSherlock spinner no seleccionable en ActionBar - Tema relacionado
- No se puede usar el color referenciado (por tema) en dibujable
La peor parte aquí fue encontrar el "nombre" para este elemento y cómo se llama dentro del tema. Así que miré a través de cada dibujable en la carpeta androide de SDK y finalmente encontré los elementos llamativos denominados "text_select_handle_middle", "text_select_handle_left" y "text_select_handle_right".
Por lo tanto, la solución es simple: añada estas líneas con diseño personalizado / color a su carpeta dibujable y agréguelas a su definición de estilo de tema como:
<style name="MyCustomTheme" parent="@style/MyNotSoCustomTheme"> <item name="android:textSelectHandle">@drawable/text_select_handle_middle</item> <item name="android:textSelectHandleLeft">@drawable/text_select_handle_left</item> <item name="android:textSelectHandleRight">@drawable/text_select_handle_right</item> </style>
Cómo hacerlo desde el código?
try { final Field fEditor = TextView.class.getDeclaredField("mEditor"); fEditor.setAccessible(true); final Object editor = fEditor.get(editText); final Field fSelectHandleLeft = editor.getClass().getDeclaredField("mSelectHandleLeft"); final Field fSelectHandleRight = editor.getClass().getDeclaredField("mSelectHandleRight"); final Field fSelectHandleCenter = editor.getClass().getDeclaredField("mSelectHandleCenter"); fSelectHandleLeft.setAccessible(true); fSelectHandleRight.setAccessible(true); fSelectHandleCenter.setAccessible(true); final Resources res = context.getResources(); fSelectHandleLeft.set(editor, res.getDrawable(R.drawable.text_select_handle_left)); fSelectHandleRight.set(editor, res.getDrawable(R.drawable.text_select_handle_right)); fSelectHandleCenter.set(editor, res.getDrawable(R.drawable.text_select_handle_middle)); } catch (final Exception ignored) { }
Reconozco que esto es realmente tarde, pero si todo lo que quieres hacer es cambiar el color del identificador, sólo tienes que añadir lo siguiente a tu archivo styles.xml.
<style name="ColoredHandleTheme"> <item name="colorControlActivated">@color/colorYouWant</item> </style>
Y, a continuación, acaba de establecer el tema en cualquier actividad es la celebración de la EditText
que desea afectar.
O si desea configurarla en toda la aplicación, puede hacer lo siguiente:
<style name="ColoredHandleThemeForWholeApp"> <item name="colorAccent">@color/colorYouWant</item> </style>
Y establecer ese tema para toda la aplicación.
¡Problema resuelto!
Puede ver estos atributos en http://androiddrawables.com/Other.html .
Cambie sus valores / styles.xml, por ejemplo:
<style name="AppTheme.Cursor" parent="AppTheme"> <item name="colorAccent">@color/cursor</item> </style>
Donde @ color / cursor se agrega en valores / color.xml. Después aplique el estilo a la actividad:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.AppTheme_Cursor); ...
Visite Cómo cambiar el color del puntero de EditText (no cursor) para otras soluciones.
Para cambiar el color de las manijas selectas, debes anular el color activado en el tema de la aplicación:
<style name="MyCustomTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:colorControlActivated">@color/customActivatedColor</item> </style>
- CustomAnimation al llamar a popBackStack en un FragmentManager
- Cómo mostrar y ocultar la barra de acciones mediante programación en una actividad