Нарисуйте изображение рядом с текстом редактирования в Android - PullRequest
2 голосов
/ 19 января 2012

Я хочу нарисовать изображение слева от EditText. Я не хочу, чтобы изображение отображалось в EditText.

Я использую это:

<EditText
    android:id="@+id/firstNameTxt"
    style="@style/UserInfoInputs"
    android:drawablePadding="20dp"
    android:drawableLeft="@drawable/first_name" >
</EditText>

Отображает изображение внутри EditText. Однако я использую это на TextView, и он отлично работает:

<TextView
    android:id="@+id/positionValue"
    style="@style/userInfo"
    android:drawableLeft="@drawable/position" />

Как это можно сделать для EditText?

Ответы [ 3 ]

2 голосов
/ 19 января 2012

попробуйте

<LinearLayout 
        android:orientation="horizontal"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">

          <ImageView
        android:id="@+id/go_image"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"     
        android:src="@drawable/icon"
        />
        <EditText  
        android:id="@+id/url" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"     
        android:lines="1"
        android:layout_weight="1.0" />



    </LinearLayout>

дайте мне знать, если это работает.

1 голос
/ 19 января 2012

Разница между двумя описанными вами вариантами использования проста.Нет никакой разницы.С EditText есть строки, которые легко различимы.С TextView нет.Попробуйте установить свойство background для textview, и вы увидите, что объект рисования, в действительности, рисуется с левой стороны, но все еще «внутри», TextView.

Самый простой способ выполнить вашу задачу(как описано) заключается в использовании ImageView.В зависимости от того, какую ViewGroup (LinearLayout, RelativeLayout и т. Д.) Вы используете, код может немного отличаться;Итак, обновите ваш вопрос соответствующей информацией, и я сделаю свой ответ немного более конкретным.

Я должен отметить, что другой метод, который вы могли бы использовать, - это создание собственного пользовательского компонента, который действительно очень простсделать.См. Эту статью Пользовательские компоненты |Android Developer , не забудьте прокрутить заголовок «Составные элементы управления» до заголовка «Составные элементы управления».Это было бы особенно полезно, когда это «общий» формат элементов управления, который вы будете часто использовать (т.е. у вас есть изображение рядом с TextView во всем приложении).

0 голосов
/ 19 января 2012

Это потому, что фоновая часть EditText растягивается за всем содержимым представления, , включая рисованные элементы .
Если вы используете RelativeLayout, вы можете просто добавить отдельный ImageView:

<ImageView
    layout_width="wrap_content"
    layout_height="wrap_content"
    layout_toLeftOf="@+id/firstNameTxt"
    src="@drawable/first_name"
    other imageview attributes as neccessary...
    />
<EditText
    android:id="@+id/firstNameTxt"
    style="@style/UserInfoInputs"
    />

Или, если вы используете другой тип макета, создайте LinearLayout -wrapper:

<LinearLayout
    layout_width="wrap_content"
    layout_height="wrap_content">
    <ImageView
        layout_width="wrap_content"
        layout_height="wrap_content"
        layout_toLeftOf="@+id/firstNameTxt"
        src="@drawable/first_name"
        other imageview attributes as neccessary...
        />
    <EditText
        android:id="@+id/firstNameTxt"
        style="@style/UserInfoInputs"
        />
</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...