如何在 EditText 中添加 ImageView?
How to add ImageView inside EditText?
我有一个圆角矩形editText
。如何在 EditText
中添加 imageView
?
<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>
输出
在此之前,我试过
<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
更改图像颜色。
您可以使用 setCompoundDrawablesWithIntrinsicBounds 方法。
EditText text = (EditText) findViewById(R.id.edtText);
text.setText("MyText");
text.setCompoundDrawablesWithIntrinsicBounds(null, null,
getResources().getDrawable(R.drawable.myDrawable, null), null);
您也可以使用 android:drawableRight
或 android:drawableLeft
android:drawableRight="@android:drawable/my_image"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword"
android:paddingEnd="60dp"
android:paddingStart="4dp"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:layout_marginEnd="25dp"
android:padding="8dp"
app:srcCompat="@drawable/ic_email"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:padding="8dp"
app:srcCompat="@drawable/ic_password"/>
</FrameLayout>
它看起来像这样(检查 link 中的图片):-
https://i.stack.imgur.com/NBrjO.png
不要将圆角矩形用于 EditText 背景,而是在 parent RelativeLayout 上使用它。使后续的children bg transparent:
<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>
试试这个
<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>
android:background="@drawable/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>
输出
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" />
我有一个圆角矩形editText
。如何在 EditText
中添加 imageView
?
<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>
输出
在此之前,我试过
<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
更改图像颜色。
您可以使用 setCompoundDrawablesWithIntrinsicBounds 方法。
EditText text = (EditText) findViewById(R.id.edtText);
text.setText("MyText");
text.setCompoundDrawablesWithIntrinsicBounds(null, null,
getResources().getDrawable(R.drawable.myDrawable, null), null);
您也可以使用 android:drawableRight
或 android:drawableLeft
android:drawableRight="@android:drawable/my_image"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword"
android:paddingEnd="60dp"
android:paddingStart="4dp"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:layout_marginEnd="25dp"
android:padding="8dp"
app:srcCompat="@drawable/ic_email"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:padding="8dp"
app:srcCompat="@drawable/ic_password"/>
</FrameLayout>
它看起来像这样(检查 link 中的图片):- https://i.stack.imgur.com/NBrjO.png
不要将圆角矩形用于 EditText 背景,而是在 parent RelativeLayout 上使用它。使后续的children bg transparent:
<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>
试试这个
<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>
android:background="@drawable/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>
输出
<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" />