我有以下要求(大大简化):
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,但我找不到允许我这样做的属性。
答案 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)
您可能必须使用具有View
和android:layout_centerHorizontal="true"
且带有ID的虚拟android:layout_width="0dp"
。然后添加属性TextView
的{{1}}来定位它。可能有一种更简单的方法可以做到这一点但我现在无法测试。