在另一个重叠下添加片段

时间:2017-01-19 14:13:35

标签: java android android-fragments

我试图在另一个片段下面显示片段,但是我面临着视图问题,当我调用第一个片段时,第一个片段会重叠。

我的第一个片段容器RelativeLayout,标识为mainLayout,第二个片段标识为carLayout

我认为XML代码存在问题。

我的XML

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/topLayout">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
            android:id="@+id/my_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            android:elevation="4dp"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                android:layout_weight="1" />
        </LinearLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/mainLayout">

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        >
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/carLayout">

        </RelativeLayout>


    </LinearLayout>

我需要在片段1下面设置片段2

但它重叠。

3 个答案:

答案 0 :(得分:0)

carLayout是一个RelativeLayout,所以新的片段将在最后一个片段之上,将其更改为方向垂直的LinearLayout。

答案 1 :(得分:0)

您需要在carLayout下面显示另一个视图。

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/anotherLayout"
    android:layout_below="@id/carLayout">
</RelativeLayout>

&#39;添加&#39;方法向视图添加片段,因此您可以修改方法以每次使用不同的容器:

public void replaceFragment(Fragment someFragment, int containerId) {
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.add(containerId , someFragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

case R.id.home_menu:
     fragment = new mainFrog();
     replaceFragment(fragment,R.id.carLayout);

public void Haraj_cars(View view) {
      fragment = new carFrog();
      replaceFragment(fragment,R.id.anotherLayout);
}

答案 2 :(得分:0)

据我所知,你需要在同一个视图中设置两个片段

// add your first fragment 
 FragmentTransaction transaction = getFragmentManager().beginTransaction().add(frame_container1 , YOUR_FIRST_FRAGMENT).commit;

// add your second fragment 
 FragmentTransaction transaction = getFragmentManager().beginTransaction().add(frame_container2 , YOUR_SECOND_FRAGMENT).commit;



<linearLayout    android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="2">
 <FrameLayout
            android:id="@+id/frame_container1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />

<FrameLayout
            android:id="@+id/frame_container2"
            android:layout_width="match_parent"
            android:layout_height="match_parent" 
            android:layout_weight="1"/>

</linearLayout>

或只是

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="YOUR FRAGMENT CLASS"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    </fragment>