AndroidのEditTextビュー内にアイコンを追加する方法


141

EditText左端の内側に表示する「検索」アイコンを追加したいですか?FacebookのAndroidアプリの検索ボックスなど?

回答:


432

android:drawableLeftEditText のプロパティを使用します。

<EditText
    ...     
    android:drawableLeft="@drawable/my_icon" />

3
不明瞭な質問で申し訳ありません。ボタンを追加したいので、クリックするとアクションが実行されます
Adham

20
検索の見出しを考えると、これは私が期待した解決策でした。
Thomas Ahle、

32
また、drawablePaddingプロパティを使用してパディングを調整します。
Ryan R

それで、そのドローアブルアイコンのサイズはどのくらいで、どのフォルダに配置すればよいでしょうか。
Kalpesh Lakhani 2014

2
@KalpeshLakhani:通常、エディットテキストとドローアブルは、Androidデザインガイドラインに従って32dpである必要があります:developer.android.com/design/style/metrics-grids.html
Lee Yi Hong

30

marcosによって提案されているように、XMLでdrawableLeftを設定できますが、たとえばイベントに応答して、プログラムで設定することもできます。これを行うには、メソッドsetCompoundDrawablesWithIntrincisBounds(int、int、int、int)を使用します

EditText editText = findViewById(R.id.myEditText);

// Set drawables for left, top, right, and bottom - send 0 for nothing
editTxt.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myDrawable, 0, 0, 0);

これにより、背景がEditTextに設定されます。質問で明確に言及されている「左端」のアイコン/画像ではありません。
Paresh Mayani

@Paresh-これが私が答えを削除した理由です。これで、元のXMLソリューションに加えて、プログラムによるソリューションが含まれるように編集しました。
Peter Ajtai、2011年

1
プログラムでアイコンを非表示にする方法は?編集ボックスがクリックされたとき?
ハント

1
@ハント- nullビューがクリックされたときにcoumoundドローアブルをに設定するだけです。
Peter Ajtai 2012

27

Androidのデフォルトのドローアブルを使用したい場合は、次の@android:drawable/ic_menu_searchように使用できます。

<EditText android:id="@+id/inputSearch"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@android:drawable/ic_menu_search"
    android:hint="Search product.."
    android:inputType="textVisiblePassword"/>



-1

相対レイアウトを使用して、ボタンをテキスト編集ビューの左揃えに設定し、テキストビューの左パディングをボタンのサイズに設定します。パディングをハードコーディングせずにそれを行う良い方法は考えられません:/

apkツールを使用してFacebookのAPKを解凍し、レイアウトファイルを確認することもできます。


1
欧州連合全体など、多くの国で逆コンパイルは法律に違反しているので、注意してください:)
パヴェルByszewski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.