Fragment's RelativeLayout -> under AppBar in Activity (Fragment overlays Toolbars)

Fragment's RelativeLayout -> under AppBar in Activity (Fragment overlays Toolbars)

我正在为这个问题而苦恼。

我有 Activity 工具栏(2 和 1 TAB)。但是在使用 RecyclerView 创建 Fragment 之后,这个 RecyclerView 只是忽略了工具栏并且遍布屏幕(全屏/前面)。

fragment_category.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/relativelayout_recycler"
    android:layout_height="match_parent">
    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="@dimen/spacing_small"
        android:scrollbars="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    </android.support.v4.widget.SwipeRefreshLayout>

</RelativeLayout>

activity_main.xml 的一部分

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

    <android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="enterAlways">

                <include layout="@layout/toolbar" />

            </FrameLayout>

            <View
                android:id="@+id/toolbar_delimiter"
                android:layout_width="match_parent"
                android:layout_height="1px"
                android:background="@color/view_background"
                android:visibility="gone"
                app:layout_scrollFlags="scroll|enterAlways|snap" />

            <FrameLayout
                android:id="@+id/frame_filters_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:visibility="gone"
                app:layout_scrollFlags="scroll|enterAlways|snap">

                <include layout="@layout/toolbar_filters" />

            </FrameLayout>

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabGravity="fill"
                app:tabMode="fixed" />

        </android.support.design.widget.AppBarLayout>

        <FrameLayout
            android:id="@+id/frame_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/tabs"
            android:visibility="gone"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />


    </android.support.design.widget.CoordinatorLayout>

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

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_margin="@dimen/spacing_large"
        android:clickable="true"
        android:src="@drawable/ic_no_item"
        android:tint="@android:color/white" />


</RelativeLayout>

FragmentCategory.java

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.fragment_category, null);
    context = getActivity();
    // activate fragment menu
    setHasOptionsMenu(true);

    db = new DatabaseHandler(getActivity());
    sharedPref = new SharedPref(getActivity());

    resolveCategory();

    lyt_not_found = view.findViewById(R.id.lyt_not_found);
    recyclerView = (RecyclerView) view.findViewById(R.id.recycler);
    recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), Tools.getGridSpanCount(getActivity())));
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView v, int state) {
            super.onScrollStateChanged(v, state);
            if(state == RecyclerView.SCROLL_STATE_DRAGGING || state == RecyclerView.SCROLL_STATE_SETTLING){
                ActivityMain.animateFab(true);
            } else {
                ActivityMain.animateFab(false);
            }
        }
    });
    swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_layout);
    swipeLayout.setOnRefreshListener(this);
    swipeLayout.setColorSchemeResources(
            R.color.colorAccent, R.color.colorAccentDark);
    displayDataFromDatabase();
    return view;
}

我知道我只是犯了一些愚蠢的错误,但我无法弄清楚。对不起我糟糕的英语和技能。如果你想帮助我,谢谢 :)

你可以把activity_main.xml改成这样。

<android.support.design.widget.CoordinatorLayout
    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.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="enterAlways">

            <include layout="@layout/toolbar"/>

        </FrameLayout>

        <View
            android:id="@+id/toolbar_delimiter"
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:background="@color/view_background"
            android:visibility="gone"
            app:layout_scrollFlags="scroll|enterAlways|snap"/>

        <FrameLayout
            android:id="@+id/frame_filters_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:visibility="gone"
            app:layout_scrollFlags="scroll|enterAlways|snap">

            <include layout="@layout/toolbar_filters"/>

        </FrameLayout>

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabGravity="fill"
            app:tabMode="fixed"/>

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/frame_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tabs"
        android:visibility="gone"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

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

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_gravity="end|bottom"
        android:layout_margin="@dimen/spacing_large"
        android:clickable="true"
        android:src="@drawable/ic_no_item"
        android:tint="@android:color/white"/>

</android.support.design.widget.CoordinatorLayout>

您可以将 ViewPagerFloatingActionButton 添加到 CoordinatorLayout

您还可以添加一些 app:layout_behavior