Кликабельная кнопка (или любой вид) внутри EditText в android

Я хочу иметь кнопку или кликабельный вид в моем EditText, чтобы я мог выполнить некоторые действия при щелчке по нему. Я смог поместить drawable внутри моего EditText благодаря Marcosbeirigo на этот ответ. но теперь я хочу сделать его кликабельным, чтобы я мог выполнить некоторые действия над ним. Я знаю, что это возможно, поскольку HTC использует кнопки внутри EditText в своем приложении SMS, как показано на следующем рисунке -

Send button in EditText

в моем случае кнопка будет располагаться в любом месте, может быть в центре. Но главное, как я могу поместить кнопку в EditText?

6 ответов


Используйте RelativeLayout. Кнопки "Отправить" и "прикрепить" - это простые кнопки Android, а 32/160-TextView. Поместите кнопки и textview на объект EditText, поиграйте с компоновкой компоновки и установите правильное заполнение объекта EditText, чтобы текст внутри него не проходил под кнопками.

вам не нужно каких-либо drawable и слушать событие щелчка кнопок android больше не вопрос. Его абсолютно правильно


используйте это, это сработало для меня -

 <RelativeLayout android:layout_width="match_parent"
     android:layout_height="wrap_content">

            <EditText android:id="@+id/id_search_EditText"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:paddingRight="40dp"
                android:hint="Enter your feelings and connect" />

        <ImageButton android:id="@+id/id_search_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/id_search_EditText"
            android:layout_alignBottom="@+id/id_search_EditText"
            android:layout_alignRight="@+id/id_search_EditText"
            android:background="@drawable/ic_launcher"/>

      </RelativeLayout>

Я думаю, вы пытаетесь найти set click event для составного drawable. Вы можете найти некоторые решения здесь

обработка-click-events-on-a-drawable-within-an-edittext


внутри editText нет кнопки, это просто editText с белым фоном, поэтому вы не видите, что это поля и простая компоновка.


единственное возможное решение-использовать RelativeLayout, которые позволяют вам также накладывать представления на другие. Другой макет не позволит вам делать такие вещи.

также я нашел этот учебник:http://developer.android.com/resources/articles/layout-tricks-merge.html возможно, это может помочь вам:)


output

используйте этот код может работать.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/REFReLayTellFriend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:paddingBottom="5dp"
        android:paddingTop="5dp">

        <EditText
            android:id="@+id/txtSearch"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/editext_rounded"
            android:drawableLeft="@android:drawable/ic_menu_search"
            android:gravity="start"
            android:hint="Search"
            android:singleLine="true"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignRight="@+id/txtSearch"
            android:background="@drawable/ic_action_content_filter_list"/>

    </RelativeLayout>

</LinearLayout>