Как изменить цвет фокуса EditText в Android - PullRequest
39 голосов
/ 03 января 2011

Как я могу изменить цвет фокуса (оранжевый) в окне EditText? Цвет фокуса - маленький ободок вокруг всего контроля и является ярким оранжевый, когда элемент управления имеет фокус. Как я могу изменить цвет этого сосредоточиться на другой цвет? Может кто-нибудь помочь мне разобраться в этом вопросе? Заранее спасибо,

Ответы [ 3 ]

62 голосов
/ 03 января 2011

Вам придется создать / изменить собственное изображение NinePatch, чтобы заменить изображение по умолчанию, и использовать его в качестве фона вашего EditText. Если вы посмотрите в своей папке SDK, под вашей платформой, а затем res / drawable, вы должны найти изображение NinePatch для состояния фокуса EditText. Если это все, что вы хотите изменить, вы можете просто перетащить его в Photoshop или любое другое программное обеспечение для редактирования изображений, которое у вас есть, и изменить оранжевый цвет на цвет по вашему выбору. Затем сохраните это в вашей папке drawable и создайте новый StateListDrawable, например что-то вроде следующего:

edittext_modified_states.xml

<?xml version="1.0" encoding="utf-8"?>
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item 
        android:state_pressed="true"
        android:drawable="@android:drawable/edittext_pressed" 
        /> <!-- pressed -->    
    <item 
        android:state_focused="true"
        android:drawable="@drawable/edittext_focused_blue" 
        /> <!-- focused -->    
    <item 
        android:drawable="@android:drawable/edittext_normal" 
        /> <!-- default -->
</selector>

Я не знаю от руки фактические имена для NinePatches по умолчанию для EditText, поэтому заменяйте их по мере необходимости, но главное здесь - просто использовать @android:drawable изображения для тех, которые вы не модифицировали (или вы можете скопировать их в папку для рисования вашего проекта), а затем использовать измененный чертеж для вашего сфокусированного состояния.

Затем вы можете установить этот StateListDrawable в качестве фона для вашего TextView, например:

<TextView
    android:background="@drawable/edittext_modified_states"
0 голосов
/ 02 ноября 2017

Вам не нужно создавать XML-рисунки. Это может быть проще в коде. Пример в котлине:

editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
    // colorLine, colorLineFocus is vars of ColorStateList
    ViewCompat.setBackgroundTintList(editText, if (hasFocus) colorLineFocus else colorLine)
}
0 голосов
/ 31 октября 2012
<?xml version="1.0" encoding="utf-8"?>
<selector 
xmlns:android="http://schemas.android.com/apk/res/android"
>
    <item 
      android:state_pressed="true"
      android:color="colorcode" 
    /> <!-- pressed -->    
    <item 
       android:state_focused="true"
       android:color="colorcode"
    /> <!-- focused -->    
    <item 
           android:color="colorcode"
    /> <!-- default -->
</selector>
...