Отцентрируйте текстовое представление вертикально к EditText - PullRequest
3 голосов
/ 14 декабря 2010

То, что я пытаюсь сделать, это иметь TextView и справа от него editText, который занимает оставшееся пространство. TextView должен быть центрирован вертикально вдоль 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>

Ответы [ 2 ]

4 голосов
/ 20 июля 2012

То, что вы хотите сделать, возможно с помощью свойств android:layout_alignBottom и android:layout_alignTop, предоставленных RelativeLayout его дочерним элементам и android:gravity свойство TextView.

Эти свойства позволяют установить нижний / верхний край представления в соответствии с нижним / верхним краем другого вида.Применяя их к TextView, вы можете эффективно заставить TextView соответствовать высоте элемента управления EditText.Затем, используя свойство gravity, вы можете сделать текст в центре TextView вертикально внутри элемента управления TextView.

Следующий пример должен работать так, как вы предполагали:

<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>
3 голосов
/ 14 декабря 2010

добавить android:layout_gravity="center_vertical" к вашему Textview

это поместит текстовое представление по центру вертикально в родительском


...