2017-02-01 7 views
0

Я ожидал, что весь мой TextView будет вертикально центрирован в моем RelativeLayout, но это касается только логотипа. Остальные привязаны к вершине последнего.Почему гравитация не центрирует все мои взгляды?

Image

Вот мой макет:

<?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="72dp" 
android:gravity="center_vertical"> 

<TextView 
    android:id="@+id/logo" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/stop" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toEndOf="@+id/logo" 
    android:layout_toRightOf="@+id/logo" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/eta" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toEndOf="@+id/stop" 
    android:layout_toRightOf="@+id/stop" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/direction" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/stop" 
    android:layout_toEndOf="@+id/logo" 
    android:layout_toRightOf="@+id/logo" 
    android:text="TextView" /> 

ответ

1

Атрибут layout_toEndOf выполняет Оформление печатных изданий следующим образом:

Positions начальный край этой точки зрения к концу с идентификатором вида привязки. Link

Это означает, что все ваши TextView начнём края совпадают с конце logo «s. В качестве отправной точки просто удалите все атрибуты layout_toEndOf.

Тогда ваш макет должен выглядеть следующим образом:

+--------------+ 
|    | +-----------+ 
|    | | stop | 
|    | +-----------+ +-----------+ 
|  logo  |/* no space */ | eta | 
|    | +-----------+ +-----------+ 
|    | | direction | 
|    | +-----------+ 
+--------------+ 

Точнее, logo вертикально по центру, так же, как eta. Так как ваш код макета явно размещает stop и direction прямо справа от logo, поэтому direction находится ниже stop.