Android:添加片段的顺序

时间:2017-03-05 10:08:33

标签: java android android-fragments

我有这段代码:

 findViewById(R.id.button2).setOnClickListener(new View.OnClickListener()
    {
        //Se aggiungo un fragment A al container X e aggiungo il fragment B allo stesso container, il fragment B andrà sopra
        //il fragment A
        @Override
        public void onClick(View v)
        {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

            if(ko==0)
            {
                MyFragment fragment = MyFragment.createFragment(0);
                fragmentTransaction.add(R.id.formazione3,fragment);
                ko++;
            }

            else if(ko==1)
            {
                MyFragment fragment = MyFragment.createFragment(1);
                fragmentTransaction.add(R.id.formazione2,fragment);
                ko++;
            }

            else if(ko==2)
            {
                MyFragment fragment = MyFragment.createFragment(2);
                fragmentTransaction.add(R.id.moduli2,fragment);
                ko++;
            }

            else if(ko==3)
            {
                MyFragment fragment = MyFragment.createFragment(1);
                fragmentTransaction.add(R.id.moduli5,fragment);
            }

            fragmentTransaction.commit();
        }
    });

好吧,我正在体验添加片段的顺序。我有4个片段,我不明白为什么有些片段,当我添加它们时,会进入更大的片段,而其他片段则放在容器中更大的片段上。

formazione3> formazione2(formazione2包含在formazione3中) moduli2> moduli5(moduli5包含在moduli2中,moduli2包含在formazione3中)

当我添加第二个片段时,它没有显示,我认为它属于前一个片段,因此它会更大。当我添加第三个片段时,它部分位于第一个片段下,第一个片段更大。当我添加第四个片段时,它继续第三个片段,但第三个片段大于第四个片段,最重要的是第四个片段包含在第三个片段中。它是如何工作的?我根本不明白!

这是布局:

<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.example.utente.fantacalcio.FormazioniActivity"
android:weightSum="1"
android:id="@+id/activity_formazioni_layout">

<Button
    android:text="Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="12dp"
    android:id="@+id/button2" />

<Button
    android:text="Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/button" />

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <RelativeLayout
        android:layout_width="107dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione">

    </RelativeLayout>
</LinearLayout>

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

    <RelativeLayout
        android:layout_width="92dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli1">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione1">

    </RelativeLayout>
</LinearLayout>

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

    <RelativeLayout
        android:layout_width="71dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli2">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione2">

    </RelativeLayout>
</LinearLayout>

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

    <RelativeLayout
        android:layout_width="51dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli3">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione3">

    </RelativeLayout>
</LinearLayout>

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

    <RelativeLayout
        android:layout_width="29dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli4">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione4">

    </RelativeLayout>
</LinearLayout>

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

    <RelativeLayout
        android:layout_width="11dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli5">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione5">

    </RelativeLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您的父布局是RelativeLayout,此布局的默认行为是第一个子视图位于最后一个子视图下。

在你的xml这个孩子:

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

    <RelativeLayout
        android:layout_width="51dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli3">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione3">

    </RelativeLayout>
</LinearLayout>

在此子视图下:

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

    <RelativeLayout
        android:layout_width="71dp"
        android:layout_height="match_parent"
        android:id="@+id/moduli2">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/formazione2">

    </RelativeLayout>
</LinearLayout>

所以当意见膨胀时,这是相反的formazione3是over formazione2。

此外,您的LinearLayout具有以下属性:

android:layout_width="match_parent"
android:layout_height="match_parent"

所以他们占据了所有可用的地方。

尝试在dp而不是match_parent中设置fixe大小,以查看实际发生的情况。

希望这有帮助。

抱歉我的英语不好。