如何在EditText上添加图像

时间:2010-09-13 18:27:54

标签: android image android-edittext

我想在EditText中动态添加图片。可能吗?

如果有人知道,请提供示例代码。

10 个答案:

答案 0 :(得分:63)

如果是这样的话:

EditCheck

你正在谈论的是

,那么你只需要在xml中设置Drawable{Right | Left | Top | Bottom}属性,或者调用相应的java命令。

EditText text = (EditText)findViewById(R.id.text);
text.setCompoundDrawables(null, null, getResources().getDrawable(R.drawable.check_box), null);

答案 1 :(得分:60)

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>

答案 2 :(得分:45)

使用android:drawableRightandroid: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"
        />  

答案 3 :(得分:26)

你也可以试试这个

    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);

答案 4 :(得分:16)

Test Image

您可以使用setCompoundDrawablesWithIntrinsicBounds (int left, 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);

答案 5 :(得分:7)

您可以通过EditText将照片添加到android:background="@drawable/img"

如果您想使用九个补丁修​​改样式,或者如果您想在EditText的左侧添加一个小图片,请考虑使用android:drawableRight="@drawable/icon"

答案 6 :(得分:1)

  

扩展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);
}

答案 7 :(得分:1)

您可以使用:

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

如此处所示:
Calling setCompoundDrawables() doesn't display the Compound Drawable

答案 8 :(得分:1)

创建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

的右侧

答案 9 :(得分:0)

如果您处于适配器类

,则可以尝试此操作
    holder.myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
            _context.getResources().getDrawable(R.drawable.ic_launcher),
            null);

如果您参加活动课程

,可以尝试此操作
    myEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
            getResources().getDrawable(R.drawable.ic_launcher),
            null);