1

我有以下布局文件:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    <TextView
            android:text="TOP"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    <RelativeLayout
            android:background="@color/azul_pressed"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <TextView
                android:id="@+id/tv1"
                android:paddingLeft="100dp"
                android:text="|RIGHT--"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        <TextView
                android:id="@+id/tv2"
                android:layout_toLeftOf="@id/tv1"
                android:text="--LEFT|"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

    </RelativeLayout>

    <TextView
            android:text="BOTTOM"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

产生以下输出:

在此处输入图像描述

这一行:

android:layout_toLeftOf="@id/tv1"

导致tv2从屏幕上消失并创建所有额外的蓝色空间。

为什么?

4

2 回答 2

0

您是否将填充与边距混淆?填充将在 TextView 中移动文本,实际上并不是边界的一部分。如果您想从侧面推动它们,或者在父 ViewGroup 上填充(同样的事情),请使用边距。

<TextView
    android:id="@+id/tv2"
    android:layout_alignParentLeft="true"
    android:text="--LEFT|"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/tv1"
    android:text="|RIGHT--"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/tv2"/>

这将使视图彼此相邻。

如果您想在左侧将它们偏移 100 个像素,请添加:

android:margin_left="100dp"到tv2。由于 tv1 连接到 tv2 的右侧,因此它会将两者推高 100dp。我不太确定你的意图是什么,但我认为LinearLayout在孩子身上设置重力会更好,因为两个文本视图将占据相同的空间并均匀分布。

编辑:请注意,这类似于 Carlos Paulino 的回答。我认为您将文本的填充偏移量与布局边界混淆了。

于 2013-08-14T20:48:14.743 回答
0

在相对布局中,您必须对齐,您必须将内容与父级或另一个小部件对齐。

我相信这就是您正在寻找的:

<TextView
        android:id="@+id/tv1"
        android:paddingLeft="100dp"
        android:text="|RIGHT--"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tv2"/>

<TextView
        android:id="@+id/tv2"
        android:layout_alignParentLeft="true"
        android:text="--LEFT|"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

看看我如何将 tv1 对齐到父级的左侧,然后将 tv2 对齐到 tv1 的右侧。

你也可以反过来做。

于 2013-08-14T19:45:58.147 回答