EditText内に画像ボタンを配置したいのですが、図に示すようにその方法を教えてください。ありがとう
その画像をクリックしたくない場合は、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>
出力:
マテリアルでは、EditTextの下にその下線があります。ほとんどのアプリケーションでは、アイコンが下線で表示されます内部。
そのためには、パディングを使用します
Android:paddingEnd = "@dimen/my_button_size"
サブ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に配置してみませんか?:
<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を右に配置します。
ImageButton
の単純なプロパティで実現できるEditText
を配置する理由がわかりません。
Android:drawableRight = "描画可能"
それはあなたのために働くことはできませんか?
EditTextを線形レイアウト(水平)内に配置し、その横にImage Buttonを追加します(0パディング)。 EditTextとImageButtonの背景色を設定するとブレンドされます。