我想在EditText中添加一个图像按钮,但我不知道怎么做,请告诉我如何实现,如下图所示。谢谢。
如果您不想点击那张图片,则可以使用drawableRight
属性来编辑文本框。
android:drawableRight="@drawable/icon"
如果您想要点击,则使用以下代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter search key" />
<ImageButton
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/search"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:text="Button"/>
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true" >
</EditText>
<ImageView
android:id="@+id/imageView1"
android:padding="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignRight="@+id/editText1"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
输出:
android:singleLine="true"
和android:paddingRight="50dp"
属性可以防止文本超出右侧图像按钮的范围。请注意保持原文意思不变,同时使语言表达更加通俗易懂。 - Price在 Material 中,EditText 下面有一个下划线。在大多数应用程序中,图标出现在这个下划线内部。
为此,只需使用padding即可。
android:paddingEnd = "@dimen/my_button_size"
别忘了在sub 4.2版本中使用paddingRight。
<RelativeLayout ....>
...
<EditText
...
android:id="@+id/my_text_edit"
android:textAlignment = "viewStart"
android:paddingEnd = "@dimen/my_button_size"
android:paddingRight = "@dimen/my_button_size"
.../>
<ImageButton
....
android:layout_width="@dimen/my_button_size"
android:layout_height="@dimen/my_button_size"
android:layout_alignEnd="@id/my_text_edit"
android:layout_alignRight="@id/my_text_edit"/>
...
</RelativeLayout>
它将限制文本在图像内,而图像不会覆盖文本,无论文本有多长。
editText
出现在imageButton
的“后面”。这还使用了Android资源,因此您无需提供自己的图标或字符串资源。将此片段复制并粘贴到您想要搜索栏的任何位置即可: <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_margin="8dp"
android:id="@+id/etSearch"
android:hint="@android:string/search_go"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/ivSearch"
android:background="@color/transparent_black"
android:padding="2dp"
android:layout_width="wrap_content"
android:layout_margin="8dp"
android:src="@android:drawable/ic_menu_search"
android:layout_height="wrap_content"
tools:ignore="contentDescription" />
</LinearLayout>
Restult:
android:drawableRight="@android:drawable/ic_menu_search"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!-- EditText for Search -->
<EditText android:id="@+id/inputSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Search whatever..."
android:textSize="14dp"
android:textStyle="italic"
android:drawableLeft="@drawable/magnifyingglass"
android:inputType="textVisiblePassword"
android:theme="@style/EditTextColorCustom"/>
<Button
android:id="@+id/btn_clear"
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/inputSearch"
android:layout_marginRight="5dp"
android:background="@drawable/xbutton"
android:visibility="gone"/>
</RelativeLayout>
此外,通过这种方式,您将能够在代码中处理按钮的可见性(GONE / VISIBLE)。
希望对您有所帮助。
我觉得这很简单。将相对布局作为您的父布局。使用以下任何一种方法将editText放置在左侧,将ImageButton放置在右侧:
android:background="@android:color/transparent"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:focusableInTouchMode="true"
android:layout_margin="4dp">
<EditText
android:id="@+id/editText"
style="@android:style/TextAppearance.Medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
android:background="@drawable/shape_textbox"
android:hint="text"
android:imeOptions="actionDone"
android:importantForAutofill="no"
android:inputType="text" />
<ImageButton
android:id="@+id/btn1"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:layout_toStartOf="@+id/btn2"
android:background="?android:selectableItemBackgroundBorderless"
android:src="@drawable/ic_btn1" />
<ImageButton
android:id="@+id/btn2"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_margin="5dp"
android:background="?android:selectableItemBackgroundBorderless"
android:contentDescription="@string/clear"
android:src="@drawable/ic_btn2" />
</RelativeLayout>
或者您也可以将按钮包装在框架布局中:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
>
<ImageButton ... />
</FrameLayout>