为什么引力并不是我所有观点的中心?

时间:2017-02-01 20:05:55

标签: android android-layout layout-gravity

我期待我的所有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 个答案:

答案 0 :(得分:1)

属性layout_toEndOf按如下方式执行布局:

  

将此视图的起始边缘定位到给定锚点视图ID的末尾。 Link

这意味着您的所有TextView开始边缘都与logo的结尾对齐。 作为起点,只需删除所有layout_toEndOf属性。

然后你的布局应该是这样的:

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

更准确地说,logo是垂直居中的,与eta相同。由于您的布局代码明确地将stopdirection直接放在logo的右侧,因此direction低于stop