Je veux placer un bouton d'image à l'intérieur de EditText, mais je n'ai pas d'idée, dites-moi comment le faire comme indiqué sur la figure. Merci
Si vous ne voulez pas cliquer sur cette image, vous pouvez utiliser la propriété drawableRight
pour EditText ..
Android:drawableRight="@drawable/icon"
Si vous voulez cliquer, utilisez le code ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content" >
<EditText
Android:layout_width="match_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>
Si vous voulez une telle disposition et une image cliquable, vous pouvez faire quelque chose comme ça
<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>
Sortie:
Dans Material, il y a ce soulignement sous EditText. Dans la plupart des applications, les icônes apparaissent à l'intérieur qui soulignent.
Pour cela, il suffit d'utiliser un rembourrage
Android:paddingEnd = "@dimen/my_button_size"
N'oubliez pas paddingRight pour les versions sous 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>
Cela limitera le texte à l'image et l'image ne chevauchera pas le texte, quelle que soit la longueur du texte.
Ma solution s'adaptera à toutes les tailles d'écran sans que le editText
passe "derrière" le imageButton
. Cela utilise également les ressources Android, vous n'avez donc pas besoin de fournir votre propre icône ou ressource de chaîne. Copiez et collez cet extrait où vous voulez une barre de recherche:
<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:
vous pouvez utiliser le code ci-dessous:
Android:drawableRight="@Android:drawable/ic_menu_search"
Que diriez-vous de le placer dans un RelativeLayout comme celui-ci?:
<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>
De cette façon, vous pourrez également gérer la visibilité du bouton (GONE/VISIBLE) dans le code.
J'espère que ça aide.
Il existe une solution avec un composé cliquable étirable. Ça marche très bien - je l'ai testé
C'est assez simple, je pense. Utilisez la disposition relative comme disposition parent. Placez le editText à gauche et ImageButton à droite en utilisant soit,
Je ne sais pas pourquoi vous voulez placer ImageButton
à réaliser, ce qui peut être fait avec une simple propriété de EditText
Android: drawableRight = "votre drawable"
Cela ne peut-il pas fonctionner pour vous?
Placez votre EditText dans une disposition linéaire (horizontale) et ajoutez un bouton Image à côté (0 remplissage). La définition de la couleur d'arrière-plan de EditText et ImageButton se fondra.