android - textedit - findviewbyid r id edittext




EditTextのDrawableの右側にonClickListnerを設定する (4)

この質問には既に回答があります:

私のアプリでは、右側に検索アイコンがあるEditTextがあります。 私は以下のコードを使用しました。

 <EditText
        android:id="@+id/search"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_margin="4dip"
        android:layout_weight="1"
        android:background="@drawable/textfield_search1"
        android:drawableLeft="@drawable/logo"
        android:drawableRight="@drawable/search_icon"
        android:hint="Search Anything..."
        android:padding="4dip"
        android:singleLine="true" />

私は、 onClickListnerの右のドロウアブルに割り当てられた検索アイコンイメージのonClickListnerを設定したいと思います。 どのように可能ですか?


onTouchイベントを無効にしない限り、私の知る限り、正しいイメージにアクセスすることはできません。 1つのeditTextと1つのimageViewRelativeLayoutを使用し、次のようにOnClickListenerをイメージビューに設定することをおOnClickListenerします:

<RelativeLayout
        android:id="@+id/rlSearch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:drawable/edit_text"
        android:padding="5dip" >

        <EditText
            android:id="@+id/txtSearch"
            android:layout_width="match_parent"

            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/imgSearch"
            android:background="#00000000"
            android:ems="10"/>

        <ImageView
            android:id="@+id/imgSearch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:src="@drawable/btnsearch" />
    </RelativeLayout>

シンプルなソリューションは、Androidが既に与えている方法を使用して、wheeeeeeeeeelを再考するのではなく、:-)

editComment.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int DRAWABLE_LEFT = 0;
            final int DRAWABLE_TOP = 1;
            final int DRAWABLE_RIGHT = 2;
            final int DRAWABLE_BOTTOM = 3;

            if(event.getAction() == MotionEvent.ACTION_UP) {
                if(event.getRawX() >= (editComment.getRight() - editComment.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                    // your action here

                 return true;
                }
            }
            return false;
        }
    });

以下のトリックを使用してください:

  • アイコンでイメージボタンを作成し、その背景色を透明に設定します。
  • EditTextに画像ボタンを置く
  • あなたの関数を実行するボタンの 'onclic'kリスナーを実装する

私はこれがかなり古いことは知っていますが、私は最近非常に似たようなことをしなければならず、はるかに単純な解決策を思いつきました。

それは次のステップに至ります:

  1. EditTextとImageを含むXMLレイアウトを作成する
  2. FrameLayoutをサブクラス化し、XMLレイアウトを拡張する
  3. クリックリスナーのコードと、クリックや他の乱雑なコードの位置を心配することなく、必要なその他の動作を追加します。

完全な例については、この記事を参照してください: EditText内のドロウアブルでクリックイベントを処理する





android-edittext