Как разместить кнопку внутри текста редактирования

Я хочу разместить кнопку изображения внутри EditText, но у меня нет идеи, пожалуйста, скажите мне, как это сделать, как показано на рисунке. благодаря

Введите описание изображения здесь

Solutions Collecting From Web of "Как разместить кнопку внутри текста редактирования"

Если вы не хотите нажимать на это изображение, тогда вы можете использовать свойство drawableRight для EditText ..

 android:drawableRight="@drawable/icon" 

Если вы хотите щелкнуть, используйте ниже код.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <EditText android:layout_width="fill_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> 

Вывод:

Введите описание изображения здесь

В Material это подчеркивание под EditText. В большинстве приложений значки появляются внутри этого подчеркивания.

Введите описание изображения здесь

Для этого просто используйте прокладку

 android:paddingEnd = "@dimen/my_button_size" 

Не забывайте paddingRight для версий под 4.2.

 <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 в линейный макет (горизонтальный) и добавьте рядом с ним кнопку «Изображение» (0 дополнений). Установка цвета фона EditText и ImageButton будет смешаться.

Я не знаю, почему вы хотите разместить ImageButton для достижения, что можно сделать с помощью простого свойства EditText

Android: drawableRight = "ваш drawable"

Разве это не может работать для вас?

Есть решение с возможностью кликабельного соединения. Он работает очень хорошо – я его протестировал

РЕШЕНИЕ

Это довольно просто, я чувствую. Используйте относительный макет в качестве родительского макета. Поместите editText влево и ImageButton вправо, используя либо,

  • Свойство alignRight для ImageButton
  • Указав вес макета для каждого из полей

Используйте свойство android: drawableLeft в EditText.

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