我一直在努力让这种布局发挥作用。
这是我的代码:
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context=".MainPreviewActivity">
<fragment
android:name="com.apps.foo.CleanPreviewFragment"
android:id="@+id/clean_preview_fragment"
android:layout_weight="0.5"
android:layout_width="0dp"
android:layout_height="match_parent">
</fragment>
<fragment
android:name="com.apps.foo.pointop.DirtyPreviewFragment"
android:id="@+id/filters_fragment"
android:layout_weight="0.5"
android:layout_width="0dp"
android:layout_height="match_parent">
</fragment>
<fragment
android:name="com.apps.foo.pointop.ProcessedPreviewFragment"
android:id="@+id/processed_preview_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent">
</fragment>
</LinearLayout>
每个片段都是一个简单的RelativeLayout(都具有相同的视图):
<RelativeLayout
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"
tools:context="com.apps.<whatever the fragment name is>">
</RelativeLayout>
现在我想让它像这样工作:
1)没有嵌套的layout_weight
2)根本没有嵌套(例如嵌套2个第一个碎片等 等)
3)在视图出现后,不使用代码以编程方式执行此操作 呈现。
在我看来,最干净最易读的方法是将片段1和片段2的方向设置为水平,将片段3设置为垂直,但它不起作用。
我还检查了this answer,
但那个人使用layout_weight
和RelativeLayout。 RelativeLayouts确实忽略了这不起作用的权重。
任何帮助将不胜感激?
答案 0 :(得分:2)
您可以使用0dp
在布局的中心添加RelativeLayout
宽度和高度的虚拟视图,并相应地定位碎片:
<RelativeLayout
... >
<View
android:id="@+id/center_anchor"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerInParent="true" />
<fragment
android:layout_toLeftOf="@id/center_anchor"
android:layout_above="@id/center_anchor"
... />
<fragment
android:toLeftOf="@id/center_anchor"
android:layout_below="@id/center_anchor"
... />
<fragment
android:toRightOf="@id/center_anchor"
... />
</RelativeLayout>