将左边缘对齐到中心 - RelativeLayout

时间:2013-05-08 16:24:21

标签: android android-layout

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

enter image description here

text 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 。我经历过documentation,但我找不到允许我这样做的属性。

5 个答案:

答案 0 :(得分:35)

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

使用空Space(0x0 px)。如果您将此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>

答案 1 :(得分:0)

您可以使用alignParentLeft =“true”

将其与父左对齐

答案 2 :(得分: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>

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可能必须使用具有Viewandroid:layout_centerHorizontal="true"且带有ID的虚拟android:layout_width="0dp"。然后添加属性TextView的{​​{1}}来定位它。可能有一种更简单的方法可以做到这一点但我现在无法测试。