EditText内にbuttonを配置

3,287 views
Skip to first unread message

heppokon

unread,
Jun 19, 2011, 4:28:07 PM6/19/11
to 日本Androidの会
はじめまして。heppokon と申します。

ブラウザなどのURL入力欄のように、
EditText内に、xボタンを配置し、xボタンをタップすると入力内容がクリアされる。

という処理を実装したいのですが、実装方法がわかりません。

EditTextを継承したカスタムコンポーネントの作成になるんでしょうか?
それとも、EditTextの設定で、内部にボタンを追加できるのでしょうか?

出来れば具体的な方法をご教授いただけると助かります。
お願いします。

yuka2py

unread,
Jun 19, 2011, 9:12:56 PM6/19/11
to android-g...@googlegroups.com
heppokon さん、

ゆぅかです。おはようございます。
方法はたくさんあると思いますが、
RelativeLayout 内に EditText と Button を配置して、
イイ感じに重ね合わせるのが簡単そうですね。
どうでしょうか?

2011年6月20日5:28 heppokon <tapio...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

heppokon

unread,
Jun 20, 2011, 12:12:14 AM6/20/11
to 日本Androidの会
ゆぅかさん
返信ありがとうございます。

ゆぅかさんの言われる通り、RelativeLayout などを使用しうまく重ねる方法や、
背景画像を9patchで作成しうまくつなげる方法も試してみたんですが、
どうも納得いく動き(見た目)になってくれませんでした。

たとえば、EditText内に長文を入れた際、重ねたボタンの後ろに文字が入りこんでしまい、見た目的におかしくなってしまいます。

後ろに入り込むのを防ぐために、一定文字数で・・・に置き換える事も試しましたが、
機種に幅が違うので、思うような結果が得られませんでした。

出来れば、1つのコンポーネントとして、EditText内にボタンを配置する方法を探しています。

ゆぅかさん、せっかく返信いただいたのにすいません。

引き続き、なにか情報をご存じの方がいらっしゃいましたら、よろしくお願いいたします。

On 6月20日, 午前10:12, yuka2py <yuka...@gmail.com> wrote:
> heppokon さん、
>
> ゆぅかです。おはようございます。
> 方法はたくさんあると思いますが、
> RelativeLayout 内に EditText と Button を配置して、
> イイ感じに重ね合わせるのが簡単そうですね。
> どうでしょうか?
>
> 2011年6月20日5:28 heppokon <tapioka...@gmail.com>:
>
>
>
> > はじめまして。heppokon と申します。
>
> > ブラウザなどのURL入力欄のように、
> > EditText内に、xボタンを配置し、xボタンをタップすると入力内容がクリアされる。
>
> > という処理を実装したいのですが、実装方法がわかりません。
>
> > EditTextを継承したカスタムコンポーネントの作成になるんでしょうか?
> > それとも、EditTextの設定で、内部にボタンを追加できるのでしょうか?
>
> > 出来れば具体的な方法をご教授いただけると助かります。
> > お願いします。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

あんざいゆき

unread,
Jun 20, 2011, 12:23:01 AM6/20/11
to android-g...@googlegroups.com
あんざいです。

 android:drawableRight で画像をおいて

http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableRight

 その上に透明の View をおいて TouchDelegate かな。

http://developer.android.com/reference/android/view/TouchDelegate.html

 ただ、この場合 drawableRight で <selector> がきくかどうかは
 試してないのでわかりません。


2011/6/20 heppokon <tapio...@gmail.com>:

--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm
Y.A.Mの雑記帳 http://y-anz-m.blogspot.com/

yuka2py

unread,
Jun 20, 2011, 12:41:56 AM6/20/11
to android-g...@googlegroups.com
heppokon さん、

ゆぅかです。こんにちわ。

> 後ろに入り込むのを防ぐために、一定文字数で・・・に置き換える事も試しましたが、
> 機種に幅が違うので、思うような結果が得られませんでした。

↑こちらについては、android:paddingRight などで解決できるとい思いますが、
どうでしょうか?(何か勘違いしてたらすみません。たぶん出来たと思っています)

-- ゆぅか。


2011年6月20日13:12 heppokon <tapio...@gmail.com>:

yuka2py

unread,
Jun 20, 2011, 12:42:52 AM6/20/11
to android-g...@googlegroups.com
heppokon さん、

すみません。間違えました。(^ ^;

> たとえば、EditText内に長文を入れた際、重ねたボタンの後ろに
> 文字が入りこんでしまい、見た目的におかしくなってしまいます。

↑こちらについては、android:paddingRight などで解決できるとい思いますが、
どうでしょうか?(何か勘違いしてたらすみません。たぶん出来たと思っています)

-- ゆぅか。

2011年6月20日13:12 heppokon <tapio...@gmail.com>:

heppokon

unread,
Jun 20, 2011, 12:44:20 AM6/20/11
to 日本Androidの会
あんざいさん

返信ありがとうございます。
いつもブログを拝見させていただき、お世話になっています。知りたい情報がわかりやすく載っていて大変助かっています。

透明のviewという発想はありませんでした。ありがとうございます。
試してみます。

しかし結局、Editviewと、透明のViewを重ねると言う事になるんですよね・・・

On 6月20日, 午後1:23, あんざいゆき <anzai.y...@gmail.com> wrote:
> あんざいです。
>
>  android:drawableRight で画像をおいて
>
> http://developer.android.com/reference/android/widget/TextView.html#a...
>
>  その上に透明の View をおいて TouchDelegate かな。
>
> http://developer.android.com/reference/android/view/TouchDelegate.html
>
>  ただ、この場合 drawableRight で <selector> がきくかどうかは
>  試してないのでわかりません。
>
> 2011/6/20 heppokon <tapioka...@gmail.com>:
> anzai.y...@gmail.com
> twitter : @yanzm
> Y.A.Mの雑記帳http://y-anz-m.blogspot.com/- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

heppokon

unread,
Jun 20, 2011, 12:48:31 AM6/20/11
to 日本Androidの会
ゆぅかさん、あんざいさん、返信ありがとうございます。

教えていただいた内容を元に、いろいろ検証してみます。
情報ありがとうございました。

java Androidアプリを勉強しだして約4カ月。
カスタムコンポーネントを作れるようになっていれば、後々アプリの幅が広がるかなと思っていたんですが、
まだまだハードルが高そうです・・・。

引き続き、情報がありましたら、よろしくお願いいたします。

あんざいゆき

unread,
Jun 20, 2011, 1:11:40 AM6/20/11
to android-g...@googlegroups.com
TouchDelegate を使えば、重ねる必要は必ずしもないです。
ただし、どのみち、EditView の中のボタン(というか、アイコンというか)
にだけ TouchListener もしくは ClickListener を設定するのは
おすすめできません。
たとえば、高さを wrap_content で指定した EditView に drawableRight で
アイコンを配置した場合、そのアイコンの領域をタップするのは
アイコンが小さいため非常に難しいです。
透明の View もしくは TouchDelegate を使って実際のボタン(やアイコン)
よりもタッチに反応する領域を大きくとることをおすすめします。

あんざい


2011/6/20 heppokon <tapio...@gmail.com>:

heppokon

unread,
Jun 20, 2011, 1:54:16 AM6/20/11
to 日本Androidの会
ゆぅかさんの言われていた、
android:paddingRight で、後ろに回り込む事は回避できました。
ありがとうございます。

あんざいさんの言われている通り、アイコンが小さいと押しにくいと言うのもその通りですね。
普段、GALAXY TABで検証してますが、携帯端末だともっと画面も小さいわけですし。

ユーザビリティの向上って大変ですね・・・。

ひとまず、ゆぅかさんの方法をベースに、
あんざいさんの意見を考慮し、表示するアイコンの上下に空白の部分を設け、
クリック領域をアイコンよりも、大き目にする事で、なんとか実装出来そうです。

貴重な情報、意見ありがとうございました。

asami

unread,
Jun 20, 2011, 1:55:33 AM6/20/11
to android-g...@googlegroups.com

saramakkuroと申します。

あんざいさんがおっしゃってるのとは違う方法ですが、ApiDemoの
LinearLayout10.javaを参考にする方法もあるかと思います。
EditTextの背景画像をバックに配置し、その前にボタンとTextViewを配置する方法です。
これだったら、weightをTextViewとボタンに指定できるので、TextViewが可変になってもいけるかと思います。

横から失礼しました。

heppokon

unread,
Jun 20, 2011, 2:01:36 AM6/20/11
to 日本Androidの会
saramakkuroさん

>ApiDemoの LinearLayout10.java

情報ありがとうございます。
ソースを追って参考にしてみます。

ありがとうございました。

Reply all
Reply to author
Forward
0 new messages