Почему гравитация не центрирует все мои взгляды?

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

Образ

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

<?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 выполняет верстку следующим образом:

Помещает начальный край этого вида в конец заданного идентификатора якорного вида. Ссылка на сайт

Что означает, что все ваши TextViews начальные края совпадают с logo'Отправить. В качестве отправной точки просто удалите все layout_toEndOf атрибутов.

Тогда ваш макет должен выглядеть примерно так:

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

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

Другие вопросы по тегам