11

我有以下要求(大大简化):

在此处输入图像描述

文本 2必须从屏幕的中心开始。

我只能使用LinearLayout来实现这一点:

<more_code></more_code><LinearLayout
                                    android:baselineAligned="false"
                                    android:weightSum="2"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content">

                                <LinearLayout
                                        android:layout_weight="1"
                                        android:orientation="horizontal"
                                        android:layout_width="0dp"
                                        android:layout_height="wrap_content">
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test one"/>
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test two"/>
                                </LinearLayout>

                                <LinearLayout
                                        android:layout_weight="1"
                                        android:orientation="horizontal"
                                        android:layout_width="0dp"
                                        android:layout_height="wrap_content">
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test three"/>

                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test four"/>
                                </LinearLayout>
                            </LinearLayout><more_code></more_code>

由于我已经有太多的嵌套视图(因此得到一个myfile.xml 有更多的 10 个级别,对性能警告不利)我想知道我是否可以使用一个RelativeLayout获得相同的结果。我已经阅读了文档,但找不到允许我这样做的属性。

4

5 回答 5

37

如果您接受 0dp x 0dp 的 1 个空视图作为开销,这将非常容易。在我看来,这比拥有太多嵌套视图要好,但这可以作为其他视图的参考。

使用空白Space(0x0 像素)。如果将其Space水平居中,则可以将其用作参考,如下所示:

<RelativeLayout>

    <!-- Empty layout (0x0 dp) centered horizontally -->
    <Space android:id="@+id/dummy" 
        android:layout_width="0dp" 
        android:layout_height="0dp"
        android:layout_centerHorizontal="true" 
        android:visibility="invisible"/>

    <!-- Align to parent left -->
    <TextView
        android:id="@+id/test_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="test one"/>

    <!-- to right of the previous one, and to left of the dummy -->
    <TextView
        android:id="@+id/test_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/test_one"
        android:layout_toLeftOf="@+id/dummy"
        android:text="test two"/>

    <!-- Align to right of the dummy -->
    <TextView
        android:id="@+id/test_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/dummy"
        android:text="test three"/>

    <!-- Align to right of the previous one, and parent right -->
    <TextView
        android:id="@+id/test_four"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/test_three"
        android:layout_alignParentRight="true"
        android:text="test four"/>

</RelativeLayout>
于 2013-05-08T16:50:16.267 回答
0

您可以使用 alignParentLeft="true" 将其与父母的左侧对齐

于 2013-05-08T16:31:26.850 回答
0

尝试使用以下代码(未经测试):

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dip" >

        <!--  ListRow Left side text-->

        <TextView
            android:id = "@+id/lefttextview" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text1"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"/>
        <!-- center -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/lefttextview"
            android:text="text2"/>


    </RelativeLayout>
于 2013-05-08T16:31:33.680 回答
0

无法理解确切的问题。你想要的是来自中心的 text2 所以首先使用相对布局,因为它更容易在相对布局中进行放置,而不是线性布局,它一个接一个地放置控件,只定义了方向。并且您可以使用属性 center_in_parent 为 true,然后将 text1 对齐到它的左侧。我希望这能回答你的问题。

于 2013-05-08T16:32:46.510 回答
0

您可能必须使用View具有idandroid:layout_centerHorizontal="true"和id 的假人android:layout_width="0dp"。然后添加你TextView的属性android:layout_toRightOf="@id/id_of_dummy_view"来定位它。可能有更简单的方法可以做到这一点,但我目前无法测试。

于 2013-05-08T16:52:45.730 回答