Установить изображение в левой части EditText в Android

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

enter image description here

У меня есть EditText, как показано ниже. И я получил результат. Я хочу, чтобы изображение было абсолютно на левой стороне, как показано на рисунке выше. Я знаю, что внутри EditText использует изображение Nine Patch, и я думаю, поэтому результат - это нечто другое. Кто-нибудь знает, как это решить?

enter image description here

<EditText
            android:id="@+id/name"
            android:layout_width="fill_parent"
            android:layout_height="51dip"
            android:hint="@string/name"
            android:inputType="text"
            android:drawableLeft="@drawable/name_icon_edittext" />

Ответ 1

Вместо android:drawableLeft="@drawable/name_icon_edittext" создайте отдельный ImageView для name_icon. Таким образом, у вас больше контроля над размещением на layout

Примечание: Я предполагаю, что ваш layout есть RelativeLayout

Ответ 2

если вы хотите добавить некоторое пространство между текстом и изображением, используйте свойство'drawablePadding 'в xml

android:drawablePadding="10dp"

вот полный пример того, как использовать в edittext в xml файле

             <EditText
                android:id="@+id/edittext"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/ic_left"
                android:drawablePadding="10dp" />

Ответ 3

Вы можете использовать свойство android:drawablePadding="10dp" в файле XML. Там нет необходимости создавать отдельный imagview для значка.

Ответ 4

Немного устаревший, но для дальнейшего использования может быть:

Я бы сделал изображение с 9 патчами сам с желаемым внешним видом, сохраняя пропорции и все, кроме значка, поэтому вы можете добавить его (и повторно использовать фон) с помощью свойства drawableLeft EditText. Таким образом, только средняя часть изображения будет растянута, а остальная часть останется прежней.