Je veux mettre un bouton à côté d'un EditText et je veux que leurs hauteurs correspondent.
Par exemple, à partir du navigateur intégré Android navigateur:
Le bouton Aller a la même hauteur que le champ EditText. Je sais que je pourrais encapsuler ces deux vues dans une vue de disposition parent, et définir leurs deux hauteurs sur fill_parent, et cela les ferait correspondre. Cependant, je voudrais le faire sans avoir à donner à la mise en page une taille statique. Je préfère que l'EditText prenne la hauteur dont il a besoin en fonction de la taille de la police, puis que le bouton à côté corresponde à la hauteur qui pourrait être.
Est-ce possible avec une mise en page XML?
Vous devrez faire le EditText
wrap_content
sur sa hauteur et avoir le Button
juste fill_parent
. Vous devrez les avoir tous les deux enveloppés dans un parent Layout
. De cette façon, ils sont associés au même parent Layout
.
Essayez cela et voyez comment cela fonctionne, si cela peut me le faire savoir. Si ce n'est pas le cas, je peux vous donner du code qui vous aidera.
Vraisemblablement, le EditText
et le Button
sont à l'intérieur d'un RelativeLayout
. Définissez les attributs de disposition du bouton sur alignTop
et alignBottom
de EditText
.
Ce que vous voulez, c'est une disposition relative. Un exemple avec quelques commentaires est le suivant
Nous commençons avec ceci RelativeLayout en tant que parent. Cela peut envelopper tout le contenu. Dans ce parent, nous avons mis 2 éléments, le bouton et le editText de votre exemple.
<?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="fill_parent" >
Nous commençons par placer l'élément Button dans le coin supérieur droit. C'est à cela que servent les layout_alignParentRight et layout_alignParentTop. Encore une fois, c'est le plus grand élément, nous allons donc le laisser envelopper tout le contenu en utilisant wrap_content pour la hauteur et la largeur.
<Button
Android:id="@+id/Button1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentRight="true"
Android:layout_alignParentTop="true"
Android:text="some_text" />
Maintenant, le deuxième élément, le editText que nous voulons aligner sur le côté gauche de notre élément précédent, utilisez la référence id avec le paramètre layout_toLeftOf pour accomplir exactement cela.
<EditText
Android:id="@+id/EditText1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_toLeftOf="@+id/Button1"
Android:hint="some_hint"
Android:inputType="textCapWords" />
Fermez RelativeLayout et affichez-le maintenant pour voir ce que vous avez probablement déjà obtenu.
</RelativeLayout>
Puisque le editText est plus petit en hauteur, il ne correspondra pas au bouton à côté duquel il est placé. La solution consiste à ajouter d'autres paramètres de mise en page. Les plus magiques que vous recherchez sont layout_alignBottom et layout_alignParentTop.
Android:layout_alignBottom="@+id/Button1"
Android:layout_alignParentTop="true"
Ajoutez ces 2 et vous obtenez votre bonne mise en page.