3

Ce que j'essaie de faire est d'avoir un TextView, et à droite de celui-ci un editText qui prend le reste de l'espace. Le textView devrait être centré verticalement le long du editText. Maintenant, je peux le faire en utilisant une linearlayout, mais je préférerais le faire dans un relativelayout.Centrer un textview vertical à un EditText

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 
    <TextView 
      android:id="@+id/loginText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Login:" 
      android:paddingRight="20dp" /> 

<EditText 
      android:id="@+id/login" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/loginText" /> 

</RelativeLayout> 

Répondre

3

ajouter android:layout_gravity="center_vertical" à votre Textview

cela placerait le textview centré verticalement dans le parent


+0

qui fonctionnerait si la hauteur de la textview était la même hauteur comme editText. Ce n'est pas le cas cependant. – CoreyS

+0

pouvez-vous définir les deux edittext et textview pour avoir un layout_gravity = "center_vertical"? cela ferait-il l'affaire? – slim

+0

android: gravity = "center_vertical" fonctionne bien pour moi –

4

Qu'est-ce que vous voulez faire est possible en utilisant les android:layout_alignBottom et android:layout_alignTop propriétés fournies par le RelativeLayout à ses enfants et la propriété android:gravity du TextView.

Ces propriétés vous permettent de définir le bord inférieur/supérieur d'une vue pour qu'il corresponde au bord inférieur/supérieur d'une autre vue. En les appliquant au TextView vous pouvez effectivement faire en sorte que le TextView corresponde à la hauteur du contrôle EditText. Ensuite, avec la propriété de gravité, vous pouvez faire en sorte que le texte au centre TextView soit verticalement à l'intérieur du contrôle TextView.

L'exemple suivant devrait fonctionner comme vous le souhaitez:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="5dp" > 
    <TextView android:id="@+id/user_name_label" 
     android:text="@string/user_name" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_alignBottom="@+id/user_name_text" 
     android:layout_alignTop="@id/user_name_text" 
     android:layout_marginRight="5dp" 
     android:gravity="center_vertical" /> 
    <EditText android:id="@id/user_name_text" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_toRightOf="@id/user_name_label" /> 
</RelativeLayout> 
Questions connexes