Edittext с пользовательским фоном смещения прямоугольника - PullRequest
0 голосов
/ 23 декабря 2011

Я хотел бы создать и отредактировать текстовое поле с пользовательским фоном смещения, например так: edittext prototype

Как мне поступить?

1 Ответ

0 голосов
/ 23 декабря 2011

Я бы пошел с LinearLayout, содержащим вашу рамку в качестве фона для рисования, с тем же заполнением для верхнего, левого и правого и более высокого отступа в нижней части.

Затем настройте настраиваемый 9-патч с возможностью отслеживания состояния для вашего EditText на основе вашего фона. Фактически, если вы сделаете свой фон 9-пропатченным, вы можете использовать его как в LinearLayout, так и в EditText.

Кроме того, вам не нужно делать свой EditText пригодным для рисования с учетом состояния; но я настоятельно советую вам сделать это, чтобы пользователь мог получить визуальный отклик от вашего EditText.

Пример кода:

макет / your_layout.xml

...
<LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:background="@drawable/bg_border"
     android:paddingLeft="10dip"
     android:paddingRight="10dip"
     android:paddingTop="10dip"
     android:paddingBottom="30dip">


     <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/bg_border_statelist" />

</LinearLayout>
...

вытяжка / bg_border_statelist.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/bg_border_selected" />
    <item android:state_focused="true"
        android:drawable="@drawable/bg_border_selected" />
    <item android:drawable="@drawable/bg_border" />
</selector>

Предполагается, что ваше фоновое изображение содержит 9 патчей и называется bg_border.9.png, а соответствующая версия 9 патчей называется bg_border_selected.9.png.

Ура!

...