从活动布局重叠加载片段

时间:2016-05-16 06:37:13

标签: android android-layout android-fragments

我想加载片段布局按钮点击活动。当我这样做时,它成功地重定向到片段,但事物是片段布局与活动布局重叠。请帮帮我。

这是我的活动布局

<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="info.androidhive.materialtabs.fragments.OneFragment">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:id="@+id/linearLayout7"
    android:layout_alignTop="@+id/linearLayout6"
    android:layout_toEndOf="@+id/linearLayout6">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView14"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="1dp"
        android:layout_marginRight="10dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView15"
        android:layout_marginLeft="200dp" />
</LinearLayout>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

这是我的片段布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="info.androidhive.materialtabs.fragments.OneFragment">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="three"
    android:textSize="40dp"
    android:textStyle="bold"
    android:id="@+id/Add"
    android:layout_centerInParent="true"/>

ThreeFragment扩展Fragment并在Activity里面点击按钮,这就是我加载fragement的方法。没有错误发生,唯一的问题是视图重叠。

  AddPlan.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            Fragment fragment = new FourFragment();
            fragmentTransaction.add(R.id.fragment_container, fragment);
            fragmentTransaction.commit();

        }

    });

4 个答案:

答案 0 :(得分:2)

尝试在你的片段上加上背景:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
background="#FFFFFF"
tools:context="info.androidhive.materialtabs.fragments.OneFragment">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="three"
    android:textSize="40dp"
    android:textStyle="bold"
    android:id="@+id/Add"
    android:layout_centerInParent="true"/>

或在添加新内容之前清除其他片段:

fragmentManager.popBackStack(); 

答案 1 :(得分:0)

<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="info.androidhive.materialtabs.fragments.OneFragment">

 <FrameLayout
   android:id="@+id/fragment_container"
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

 <LinearLayout
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="50dp"
 android:id="@+id/linearLayout7"
 android:layout_alignTop="@+id/linearLayout6"
 android:layout_toEndOf="@+id/linearLayout6">

   <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView14"
    android:layout_marginLeft="25dp"
    android:layout_marginTop="1dp"
    android:layout_marginRight="10dp" />

   <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView15"
    android:layout_marginLeft="200dp" />
   </LinearLayout>


</RelativeLayout>

答案 2 :(得分:0)

用以下代码替换您的代码:

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction =    fragmentManager.beginTransaction();
        Fragment fragment = new FourFragment();
        fragmentTransaction.replace(R.id.fragment_container, fragment);
        fragmentTransaction.commit();

答案 3 :(得分:0)

如果您希望片段完全隐藏活动布局,请考虑使用DialogFragment

另请查看优秀cliff notes以了解如何全屏显示对话框。

它基本上涉及这些步骤:

  1. 从DialogFragment派生您的片段类。
  2. 将片段显示为您活动的对话框。
  3. 确保对话框片段的样式为全屏。