Я хочу разместить кнопку изображения внутри EditText, но у меня нет Idea, пожалуйста, скажите мне, как это сделать, как показано на рисунке. Благодаря
Я хочу разместить кнопку изображения внутри EditText, но у меня нет Idea, пожалуйста, скажите мне, как это сделать, как показано на рисунке. Благодаря
Если вы не хотите нажимать на это изображение, тогда вы можете использовать свойство 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>
Выход:
В материале есть это подчеркивание под EditText. В большинстве приложений значки отображаются внутри, которые подчеркивают.
Для этой цели просто используйте padding
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 вправо, используя либо
Используйте свойство android: drawableLeft в EditText.
<EditText
...
android:drawableLeft="@drawable/my_icon" />