Intereting Posts
'Не удалось найти ошибку стиля mapViewStyle'. Android – отложенные клики в ListView Как создать круговой ImageView в Android? Как обновить индикатор прогресса в элементе ListView Получение всех элементов из ArrayAdapter Получить каталог sdcard по adb Волейбол Android для использования с кешем Установка учетных данных в веб-обозревателе Android с использованием защищенного соединения HTTPS Служба не останавливается при вызове метода stopService Изменить название проекта android Android N: Как запустить активность в текущем активном окне вместо второго окна при нажатии уведомления на разделенном экране? Как использовать `adb` для установки приложений для разработки только для одного пользователя? Используя startActivityForResult, как получить requestCode в дочерней активности? Как проверить, является ли действие последним в стеке действия для приложения? Устройства Android Fastboot, не возвращающие устройство

Как изменить цвет / внешний вид элемента управления EditText / anchor?

Таким образом, я изменил стиль темы Holo с генератором Holo Colors и генератором стилей Action Bar для моего собственного цвета. Но когда я выбираю текст внутри текста редактирования, «маркеры» в выбранных позициях по-прежнему остаются синими. Как я могу его изменить?

ОставилсреднийПравильно

Solutions Collecting From Web of "Как изменить цвет / внешний вид элемента управления EditText / anchor?"

Худшая часть здесь заключалась в том, чтобы найти «имя» для этого элемента и как он называется внутри темы. Поэтому я просмотрел все доступные в папке SDK Android и, наконец, нашел выделенные объекты с именем «text_select_handle_middle», «text_select_handle_left» и «text_select_handle_right».

Таким образом, решение прост: добавьте эти чертежи с настраиваемым дизайном / цветом в вашу папку с возможностью выбора и добавьте их в определение стиля темы, например:

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

Как это сделать из кода?

 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) { } 

Я признаю, что это очень поздно, но если все, что вы хотите сделать, это изменить цвет дескриптора, вам просто нужно добавить следующее в ваш файл styles.xml.

 <style name="ColoredHandleTheme"> <item name="colorControlActivated">@color/colorYouWant</item> </style> 

А затем просто установите тему на любую активность, удерживая EditText которую вы хотите повлиять.

Или, если вы хотите установить его в приложение, вы можете сделать следующее:

 <style name="ColoredHandleThemeForWholeApp"> <item name="colorAccent">@color/colorYouWant</item> </style> 

И установите эту тему для всего приложения.

Задача решена!

Эти атрибуты можно увидеть в http://androiddrawables.com/Other.html .

Измените свои значения / styles.xml, например:

 <style name="AppTheme.Cursor" parent="AppTheme"> <item name="colorAccent">@color/cursor</item> </style> 

Где @ color / cursor добавлен в values ​​/ color.xml. После этого примените стиль к активности:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.AppTheme_Cursor); ... 

Посетите Как изменить цвет указателя EditText (не курсор) для других решений.

Чтобы изменить цвет ручек выбора, вы должны переопределить активированный цвет в теме приложения:

 <style name="MyCustomTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:colorControlActivated">@color/customActivatedColor</item> </style>