How can I add an image on EditText

2019-01-03 01:39发布

I want to dynamically add image in EditText. Is it possible?

if anyone knows please give sample code for that.

10条回答
Ridiculous、
2楼-- · 2019-01-03 02:18

You can use:

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

as suggested here:
Calling setCompoundDrawables() doesn't display the Compound Drawable

查看更多
小情绪 Triste *
3楼-- · 2019-01-03 02:20

Create an instance of the EditText

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

Then create a drawable instance of the image

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

OR

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

Then set the image by calling setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom);

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

The above line will set the image in the right side of the EditText

查看更多
beautiful°
4楼-- · 2019-01-03 02:28

using android:drawableRight or android:drawableLeft (depend where you prefer align image)

<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"
        />  
查看更多
该账号已被封号
5楼-- · 2019-01-03 02:28

extend the edittext class and do code as u want it to be

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);
}
查看更多
放荡不羁爱自由
6楼-- · 2019-01-03 02:30

you can also try this

    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);
查看更多
Anthone
7楼-- · 2019-01-03 02:34

enter image description here

Using the frame layout it is very easy to overcome this.Here another advantage is that you can give click events for buttons.if you set icons using setCompoundDrawables, you cant give the click events.I have implemented in my project that search bar has delete and search icons.

<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>
查看更多
登录 后发表回答