使用RelativeLayout对齐片段

时间:2012-04-18 02:40:00

标签: android android-layout android-fragments relativelayout android-linearlayout

我在尝试将片段与RelativeLayout对齐时遇到了实际问题,尽管看起来这应该是直截了当的。我只需要彼此相邻的两个片段,如果我使用LinearLayout它可以正常工作:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

   <fragment android:name="com.fragment.test.TitlesFragment"
            android:id="@+id/fragmentTitles"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
     />

    <FrameLayout 
            android:id="@+id/details" 
            android:layout_weight="1"
            android:layout_width="0px"
            android:layout_height="fill_parent" 
    />

</LinearLayout>

enter image description here

但是,如果我使用RelativeLayout,则不显示任何内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

   <fragment android:name="com.fragment.test.TitlesFragment"
            android:id="@+id/fragmentTitles"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
     />

    <FrameLayout 
            android:id="@+id/details" 
            android:layout_weight="1"
            android:layout_width="0px"
            android:layout_height="fill_parent" 
            android:layout_toRightOf="@id/fragmentTitles"            
    />

</RelativeLayout>

enter image description here

更新

以下是我所看到的截图:

enter image description here

这是我正在使用的代码:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    >

    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:weightSum="3"
    >
        <fragment android:name="com.fragment1"
                android:id="@+id/fragment1"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_above="@id/statusUpdated"
         />

        <fragment android:name="com.fragment2"  
                android:id="@+id/fragment2"
                android:layout_width="0px"
                android:layout_weight="2"
                android:layout_height="fill_parent"
                android:layout_above="@id/statusUpdated"        
                android:layout_toRightOf="@id/fragment1"
         />

    </LinearLayout>

    <TextView android:id="@+id/statusUpdated" style="@style/Status" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:6)

您不能使用RelativeLayout的权重。基本上,该属性会被忽略,这意味着您的片段的宽度均为0,因此它们不可见。

我不确定你要完成什么,但你可能想考虑将你的第一个例子(LinearLayout)包装成RelativeLayout - 换句话说:合并/整合两者布局。这确实会导致视图层次结构中的另一个级别。


修改

我实际上没有测试过它,但我认为这是你正在寻找的东西:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <LinearLayout 
        android:id="@+id/fragment_layout"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_above="@+id/footer_view" 
        android:weightSum="3">

        <fragment 
            android:id="@+id/fragmentTitles" 
            android:name="com.fragment.test.TitlesFragment"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:layout_weight="1" />

        <FrameLayout 
            android:id="@+id/details"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:layout_weight="2" />
    </LinearLayout>

    <TextView 
        android:id="@+id/footer_view" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true"
        android:background="#f00" 
        android:text="I am a footer" />

</RelativeLayout>

显然,您可以用您喜欢的任何内容替换TextView