web-dev-qa-db-fra.com

Comment obtenir la hauteur d'un bouton pour correspondre à la hauteur d'un autre élément?

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:

alt text

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?

54
cottonBallPaws

Vous devrez faire le EditTextwrap_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.

28
prolink007

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.

65
Falmarri

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>

enter image description here

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.

enter image description here

16
hcpl