在Android中创建此布局的最佳方法是什么?

时间:2015-07-23 20:28:19

标签: android android-layout android-fragments

我一直在努力让这种布局发挥作用。

enter image description here

这是我的代码:

<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确实忽略了这不起作用的权重。

任何帮助将不胜感激?

1 个答案:

答案 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>