2015-04-22 3 views
5

Откуда берется зеленый цвет? Я попытался изменить атрибут accentColor, который работает в других частях приложения, но не здесь.Как изменить цвет ручек EditText?

editText Colors Снимок экрана из приложения в Lollipop.

Как я могу изменить цвет:

  • текстового ручки вводимого коэффициента? как их отточить?
  • цвет выбранного цвета?

А может быть, некоторые советы на будущее ... Как вы узнали? Я сталкивался с этими запутанными проблемами цвета/стиля. Есть ли какой-то список где-нибудь, который говорит мне, какой цвет или атрибут по умолчанию мне нужно переписать для определенного компонента?

ответ

4

Для изменения цвета рукоятки вы можете сделать, как указано here вы это делаете, используя стиль как

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

Для делать это программно проверить тот же вопрос другой ответ here, который делается с помощью отражения

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

Для изменения цвета выделенного текста вы можете установить textColorHighlight в xml как

android:textColorHighlight="#ff0000" 

через стиль, который вы можете сделать, как

<item name="android:textColorHighlight">@color/m_highlight_blue</item> 
+0

спасибо за помощь, мне понравились оба ответа, но ваши были больше о обработчиках текста. Наверное, нет никакого способа просто подкрасить их? да, возможно, сначала вытащите его, а затем затяните его ... – Lokkio

3

Внесите необходимые изменения в styles.xml следующим

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorControlHighlight">@color/accent_translucent</item> 
    <item name="android:colorControlHighlight">@color/accent_translucent</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="selectableItemBackground">@drawable/selectable_item_background</item> 
    <item name="android:selectableItemBackground">@drawable/selectable_item_background</item> 

</style> 

<color name="primary">#00BCD4</color> 
<color name="primary_dark">#0097A7</color> 
<color name="accent">#FFEB3B</color> 
<color name="accent_translucent">#80FFEB3B</color> 
<color name="accent_bright">#FFF493</color> 

Или вы можете добавить атрибут XML к вашему EditText

android:textColorHighlight="@color/accent_translucent" 

Надеюсь, что он решает вашу проблему.

+0

Мне также нравится ваш ответ, потому что он устанавливает цвета по всему приложению. Только одна странная вещь, которую я еще не понял. Один из моих edittexts не берет на себя эту тему, а другой edittext делает ... Возможно, вы знаете, что условие, когда edittexts не захватывают стиль? возможно, неправильная проблема раздувания? – Lokkio

+0

Спасибо @Lokkio. Нет, я не сталкивался с такими проблемами. Возможно, это связано с раздуванием проблем. – ch3tanz

Смежные вопросы