Как я могу добавить изображение на EditText - PullRequest
46 голосов
/ 13 сентября 2010

Я хочу динамически добавить изображение в EditText. Является ли это возможным?

если кто-нибудь знает, дайте пример кода для этого.

Ответы [ 10 ]

63 голосов
/ 14 сентября 2010

Если что-то вроде этого:

EditCheck

- это то, о чем вы говорите, тогда вам просто нужно либо установить свойство Drawable{Right | Left | Top | Bottom} в xml, либо вызватьсоответствующая команда Java.

EditText text = (EditText)findViewById(R.id.text);
text.setCompoundDrawables(null, null, getResources().getDrawable(R.drawable.check_box), null);
60 голосов
/ 01 мая 2012

enter image description here

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

<FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <EditText
                android:id="@+id/search"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/search_bar"
                android:drawablePadding="8dp"
                android:paddingLeft="30dp"
                android:paddingRight="10dp"
                android:inputType="text"
                android:maxLines="1">

                <requestFocus />
            </EditText>

            <Button
                android:id="@+id/searchBtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|center_vertical"
                android:layout_margin="10dp"
                android:background="@drawable/icon_magnify" />

            <Button
                android:id="@+id/delete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|center_vertical"
                android:layout_margin="8dp"
                android:background="@drawable/icon_remove" />
        </FrameLayout>
45 голосов
/ 26 апреля 2012

с использованием android:drawableRight или android:drawableLeft (зависит от того, где вы предпочитаете выравнивать изображение)

<EditText 
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:id="@+id/searchedTxt"
        android:width="200dp"
        android:layout_alignParentRight="true"
        android:drawableRight="@android:drawable/ic_menu_search"
        android:drawablePadding="@dimen/dimen_10dp"
        />  
26 голосов
/ 03 февраля 2011

Вы также можете попробовать это

    SpannableString ss = new SpannableString("abc\n");
    Drawable d = img.getDrawable();
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
    ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    editT.setText(ss);
16 голосов
/ 24 сентября 2012

Test Image

Вы можете использовать setCompoundDrawablesWithIntrinsicBounds (int слева, int top, int right, int bottom) .

    EditText text = (EditText) findViewById(R.id.edtTest);
    text.setText("Test");
    text.setCompoundDrawablesWithIntrinsicBounds(null, null,
                       getResources().getDrawable(R.drawable.myDrawable, null), null);
7 голосов
/ 14 сентября 2010

Вы можете добавить изображение к вашему EditText через android:background="@drawable/img".

Если вы хотите изменить стиль, используя девять патчей или другое, но если вы хотите добавить небольшое изображение слева от вашего EditText, рассмотрите возможность использования android:drawableRight="@drawable/icon".

1 голос
/ 04 апреля 2017

Создать экземпляр EditText

EditText editText = (EditText) findViewById(R.id.EditText1);

Затем создайте нарисованный экземпляр изображения

Drawable image = getResources().getDrawable(R.drawable.ic_warning); // API 21 and below.

OR

Drawable image = getDrawable(R.drawable.ic_warning); // API 22 and above.

Затем установите изображение, позвонив setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);

editText.setCompoundDrawablesWithIntrinsicBounds(null, null, image, null); 

Приведенная выше строка установит изображение в правой части EditText

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

Вы можете использовать:

editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.pic_name, 0); 

, как предлагается здесь:
Вызов setCompoundDrawables () не отображает составной Drawable

1 голос
/ 31 мая 2015

расширяйте класс edittext и делайте код так, как вы хотите, чтобы он был

public void setImage(String imageResource) {
    int position = Selection.getSelectionStart(MyEditText.this
            .getText());

    Spanned e = Html.fromHtml("<img src=\"" + imageResource + "\">",
            imageGetter, null);

    MyEditText.this.getText().insert(position, e);
}
0 голосов
/ 04 июня 2015

Вы можете попробовать это, если вы в классе адаптера

    holder.myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
            _context.getResources().getDrawable(R.drawable.ic_launcher),
            null);

и Вы можете попробовать это, если вы находитесь в классе деятельности

    myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
            getResources().getDrawable(R.drawable.ic_launcher),
            null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...