我正在尝试使用三个片段创建一个简单的布局。在左边,我想要两个碎片,每个碎片占据屏幕高度的50%。在右边,我想要一个大容器片段,如下所示:
+-----+-----------------+
| f1 | detail_container|
| | |
+-----+ |
| f2 | |
| | |
+-----+-----------------+
我使用LinearLayouts
和layout_height="0dp"
使用了两个layout_weight="1"
,但我得到的信息是性能不好,所以我开始使用{{1} }。我现在拥有的是:
RelativeLayout
我不知道如何填写这两个片段的<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:baselineAligned="false"
android:divider="?android:attr/dividerHorizontal"
android:orientation="horizontal"
android:showDividers="middle"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1" >
<fragment
android:id="@+id/fragment1"
android:name="com.example.Fragment1"
android:layout_width="wrap_content"
android:layout_height=""
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
tools:layout="@android:layout/list_content" />
<fragment
android:id="@+id/fragment2"
android:name="com.example.Fragment2"
android:layout_width="wrap_content"
android:layout_height=""
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
tools:layout="@android:layout/list_content" />
</RelativeLayout>
<FrameLayout
android:id="@+id/action_detail_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
值。我尝试了各种各样的价值观,但它们似乎都必须是绝对的(我不想要)。
答案 0 :(得分:7)
以下是我的解决方案,其常见的解决方法是避免嵌套权重:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:baselineAligned="false"
android:divider="?android:attr/dividerHorizontal"
android:orientation="horizontal"
android:showDividers="middle"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1" >
<View android:id="@+id/dummyView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true"/>
<fragment
android:id="@+id/fragment1"
android:name="com.example.Fragment1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignTop="@id/dummyView"
tools:layout="@android:layout/list_content" />
<fragment
android:id="@+id/fragment2"
android:name="com.example.Fragment2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignBottom="@id/dummyView"
tools:layout="@android:layout/list_content" />
</RelativeLayout>
<FrameLayout
android:id="@+id/action_detail_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
</LinearLayout>
答案 1 :(得分:0)
为什么不切换它,即使用RelativeLayout
作为根视图,使用垂直LinearLayout
作为片段的容器?只需在容器上使用alignParentLeft
,在toRightOf
上使用FrameLayout
。
答案 2 :(得分:0)
在嵌套时使用权重通常只对性能有害(例如,参见this)。所以在你的情况下你可以使用它们 否则,您可以在中间创建一个空视图,以帮助您定位其他视图:
<RelativeLayout
...
>
<View
androi:id="@+id/separator"
android:layout_centerVertical="true"
android:layout_width="0"
android:layout_height="0"
>
<fragment
android:layout_above="@id/separator"
...
>
<fragment
android:layout_below="@id/separator"
...
>
</RelativeLayout>