Изменить цвет границы edittext

Я хотел бы знать, как изменить цвет рамки в представлении EditText в android на что-то еще...

Это мой вид edittext:

<EditText
    android:
    android:id="@+id/codeEditText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/btnEqual"
    android:layout_marginTop="20dp"
    android:ems="10"
    android:gravity="top|left"
    android:inputType="textMultiLine|textNoSuggestions"
    android:scrollbars="vertical"
    android:singleLine="false" >

Thanx upfront.

Ответ 1

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

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

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

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

<TextView
    android:background="@drawable/edittext_modified_states"

В некоторых версиях ОС вам также может потребоваться скопировать нормальные изображения немодифицированного состояния в папку с выдвижными приложениями, чтобы получить эту работу. Таким образом, в ваших приложениях, доступных для папок, вы имеете модифицированное изображение состояния фокусировки, а также немодифицированные оригинальные изображения других состояний.

Ответ 2

Существует отличный генератор виджетов, который мог бы выполнять всю работу за вас, он отлично работал у меня.

Вам просто нужно выбрать свой цвет и какой виджет вы хотите (например, EditText), тогда вы получите xml файл в выпадающем каталоге, вы должны установить этот xml в качестве фона вашего виджета и вашего Done!

http://android-holo-colors.com/

Ответ 3

Для этого вам нужно переопределить функцию onDraw. И вы сможете сделать это в одной строке. Вот хороший пример в этой презентации на слайде 66.