Я бы пошел с 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
.
Ура!