簡體   English   中英

片段在FrameLayout上重疊

[英]Fragments overlapping on FrameLayout

我正在嘗試將多個片段添加到FrameLayout 我需要在另一個下面添加它們。 但它們是重疊的。

main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

MainActivity.java

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

            // Create instance of fragments
            FragmentPrimaryList firstFrag = new FragmentPrimaryList();
            FragmentSecondaryList secFrag = new FragmentSecondaryList();

            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

            // add fragment to the fragment container layout
            fragmentTransaction.add(R.id.fragment_container,firstFrag);
            fragmentTransaction.add(R.id.fragment_container,secFrag);

            fragmentTransaction.commit();
        }
    }

它們看起來像這樣。 我怎么解決這個問題?

圖片

使用replace方法而不是add方法。

replace方法在添加新片段之前隱藏當前片段,add方法只是添加新片段而不會丟棄舊片段。

為了留住后退堆棧,使用與片段事務返回堆棧管理。

我需要同時顯示兩個片段,一個在另一個下面

您可以嘗試以下布局:

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

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
</LinearLayout>

現在使用以下命令添加碎片:

fragmentTransaction.add(R.id.fragment_container1,firstFrag);

確保你片段的layout_height = "wrap_content"

這樣做:

第一個片段

FragmentPrimaryList firstFrag = new FragmentPrimaryList();
FragmentManager  fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

// add fragment to the fragment container layout
fragmentTransaction.add(R.id.fragment_container,firstFrag);
fragmentTransaction.commit();

第二個片段

FragmentSecondaryList secFrag = new FragmentSecondaryList();
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,secFrag);
fragmentTransaction.commit();

為您的片段添加背景,並將“android:clickable =”true“設置為父布局。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM