如何在EditText中添加ImageView?

时间:2018-03-23 09:49:42

标签: android android-layout android-edittext android-imageview

我有一个圆角矩形editText。如何在imageView内添加EditText

 <RelativeLayout
        android:layout_marginTop="15dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/editTextDate"
            android:background="@drawable/rounded_rectangle"
            android:layout_toRightOf="@+id/dateIcon"
            android:text=""
            android:hint="Date"
            android:padding="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <ImageView
            android:layout_marginLeft="10dp"
            android:padding="3dp"
            android:tint="@color/colorPrimaryDark"
            android:id="@+id/dateIcon"
            android:src="@android:drawable/ic_menu_my_calendar"
            android:layout_width="40dp"
            android:layout_height="40dp" />

    </RelativeLayout>

输出

enter image description here

在此之前,我试过

 <EditText
            android:drawableLeft="@android:drawable/ic_menu_my_calendar"
            android:background="@drawable/rounded_rectangle"
            android:padding="5dp"
            android:id="@+id/editTextDate"
            android:layout_width="220dp"
            android:layout_height="40dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp" />

但我无法使用android:tint更改图像颜色。

5 个答案:

答案 0 :(得分:2)

您可以使用setCompoundDrawablesWithIntrinsicBounds方法。

EditText text = (EditText) findViewById(R.id.edtText);
    text.setText("MyText");
    text.setCompoundDrawablesWithIntrinsicBounds(null, null,
                       getResources().getDrawable(R.drawable.myDrawable, null), null);

您也可以使用android:drawableRightandroid:drawableLeft

        android:drawableRight="@android:drawable/my_image"

答案 1 :(得分:2)

{{1}}

它看起来像这样(查看链接中的图片): -               https://i.stack.imgur.com/NBrjO.png

答案 2 :(得分:1)

不要将圆角矩形用于EditText背景,而是在父RelativeLayout上使用它。让后续的孩子bg透明:

<RelativeLayout
    android:layout_marginTop="15dp"
    android:background="@drawable/rounded_rectangle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/editTextDate"
        android:background="@android:color/transparent"
        android:layout_toRightOf="@+id/dateIcon"
        android:text=""
        android:hint="Date"
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <ImageView
        android:layout_marginLeft="10dp"
        android:padding="3dp"
        android:tint="@color/colorPrimaryDark"
        android:id="@+id/dateIcon"
        android:src="@android:drawable/ic_menu_my_calendar"
        android:background="@android:color/transparent"
        android:layout_width="40dp"
        android:layout_height="40dp" />

</RelativeLayout>

答案 3 :(得分:1)

试试这个

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:background="@drawable/curve_button">

    <EditText
        android:id="@+id/editTextDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/dateIcon"
        android:background="@android:color/transparent"
        android:hint="Date"
        android:padding="10dp"
        android:text="" />

    <ImageView
        android:id="@+id/dateIcon"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:padding="3dp"
        android:backgroundTintMode="src_over"
        android:src="@android:drawable/ic_menu_my_calendar"
        android:tint="@color/red" />

</RelativeLayout>

<强>机器人:背景=“@绘制/ curve_button

<?xml version="1.0" encoding="utf-8"?><!--  res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">
    <solid android:color="#FFFFFF" />

    <stroke android:width="1dip" android:color="#1a1919" />
    <corners android:radius="20dp"/>
</shape>

<强>输出

enter image description here

答案 4 :(得分:0)

enter image description here

android:drawableStart =“ @ drawable / ic_search”

<com.google.android.material.textfield.TextInputEditText
    android:id="@+id/editTextSearch"
    android:layout_width="match_parent"
    android:layout_height="46dp"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginEnd="10dp"
    android:background="@drawable/shape_edittext"
    android:hint="Search for services"
    android:paddingStart="10dp"
    android:maxLines="1"
    android:inputType="text"
    android:textSize="16sp"
    android:drawablePadding="10dp"
    android:drawableStart="@drawable/ic_search"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/textViewDescription" />