Android Studio-用片段替换ViewPager-重叠片段

时间:2018-10-26 23:44:37

标签: android fragment

好吧,我有一个MainActivity,它的FrameLayout带有ViewPager和TabLayout。 ViewPager中有3个片段,每个片段中都有一个按钮。

我想这样做,也就是说,当您单击第一个片段上的按钮时,它将用另一个片段替换(销毁)整个Framelayout。问题是,ViewPager和TabLayout(位于帧布局中的那些元素)仍然可见,并且应该替换它们的新片段出现了,但重叠了。

代码如下:

main_activity_layout

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.2">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/starIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/Star_Number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toLeftOf="@id/starIcon"
            android:text="0"
            android:textSize="26sp" />

    </RelativeLayout>


</LinearLayout>

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

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabDots"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:layout_gravity="bottom"
        app:tabBackground="@drawable/tab_selector"
        app:tabGravity="center"
        app:tabIndicatorHeight="0dp" />

</FrameLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.2"
    android:orientation="vertical">


    <Button
        android:id="@+id/Go_Back_Btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:text="Go back" />
</LinearLayout>

具有按钮的片段,该按钮应将FrameLayout替换为新的片段

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    final View v = inflater.inflate(R.layout.fragment_addition_box, container, false);

    additionBox = v.findViewById(R.id.Addition_Box);
    additionBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getActivity().
                    getSupportFragmentManager().
                    beginTransaction().
                    replace(R.id.mainLayout, AdditionLevelsFragment.newInstance(), null).
                    addToBackStack(null).commit();
        }
    });
    return v;
}

enter image description here

enter image description here

应替换FrameLayout的片段中具有“添加级别”。

0 个答案:

没有答案