I have problem with NestedScrollView, because it cuts bottom of view.
I have FragmentA with schema: 
<RelativeLayout>
<android.support.design.widget.CoordinatorLayout>
    <android.support.design.widget.AppBarLayout>
        <android.support.design.widget.CollapsingToolbarLayout>
            <ImageView/>
            <android.support.v7.widget.Toolbar/>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.widget.NestedScrollView>
        <LinearLayout>
            <FrameLayout> 
                <!-- fragment added dynamically-->
            </FrameLayout>
            <FrameLayout>
                <!-- fragment added dynamically-->
            </FrameLayout>
            <FrameLayout>
                <!-- fragment added dynamically-->
            </FrameLayout>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    <android.support.design.widget.FloatingActionButton/>
</android.support.design.widget.CoordinatorLayout>
I am adding dinamically fragments to each FrameLayout.
I did SS how it look like when I run app first time: Screen at first time
I put padding to every layout to see what is happend.
green is CoordinatorLayout,
red is NestedScrollView,
orangeis LinearLayout inside NestedScrollView. 
Now I am replace FragmentA with FragmentB and again comeback to FragmentA and I have something like this: wrong dispaly
Somebody knows what I am doing wrong?
This is my whole layout for FragmentA:
<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:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorP"
    android:padding="5dp"
    android:layout_above="@+id/przyciski">
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginBottom="25dp"
            app:expandedTitleMarginEnd="0dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
            <ImageView
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                android:contentDescription="descp" />
            <android.support.v7.widget.Toolbar
                android:id="@+id/anim_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.widget.NestedScrollView
        android:id="@+id/scrollableview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorRedCalendar"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:padding="5dp">
        <LinearLayout
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorAccent"
            android:orientation="vertical"
            android:padding="5dp">
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/frameForInfo"
                android:minHeight="100dp"
                android:focusableInTouchMode="true">
            </FrameLayout>
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/frameForCalendar"
                android:minHeight="100dp"
                android:focusableInTouchMode="true">
            </FrameLayout>
            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/frameForGraph"
                android:minHeight="100dp"
                android:focusableInTouchMode="true">
            </FrameLayout>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        android:clickable="true"
        app:layout_anchor="@+id/appbar"
        app:layout_anchorGravity="bottom|right|end"
        app:backgroundTint="@color/colorAccent"
        android:id="@+id/floatingButtonLog" />
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
EDIT: I compile with:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.jjoe64:graphview:4.2.1'
}
I am adding Fragments into FrameLayout with:
infoFragment = new InfoFragment();
    infoFragment.setLogs(mapLogIn, mapLogOut, monthToDispaly, yearToDispaly);
    infoFragment.setPracownik(mPracownik);
    if (getChildFragmentManager().findFragmentByTag("INFO") == null) {
        getChildFragmentManager()
                .beginTransaction()
                .add(R.id.frameForInfo, infoFragment, "INFO")
                .commit();
    }else {
        getChildFragmentManager()
                .beginTransaction()
                .replace(R.id.frameForInfo, infoFragment, "INFO")
                .commit();
    }
How I replacing FragmentA with FragmentB:
((AppCompatActivity)getActivity()).getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.frameForFragment, edit)
                        .addToBackStack(null)
                        .commit();
And how I come back from FragmentB to FragmentA:
getFragmentManager().beginTransaction().remove(AddingPerson.this).commit();
                    if (getFragmentManager().getBackStackEntryCount()>0){
                        getFragmentManager().popBackStack();
                    }
It looks like NestedScrollView was cuted at the bottom, because (if you look at ss) there is no padding frame at bottom.
I notice that when I come back to FragmentA (when wrong display is dispalying) and I replace fragments inside NestedScrollView bottom of NestedScrollView appears.
Here is YT video.
UPDATE
I found temporary answer here. I added:
android:layout_gravity="fill_vertical"
android:layout_marginBottom="?attr/actionBarSize"
But there is written that this bug is fixed in v22.2.1 but it seems is not. Somebody knows something about that?
Try using:
android:layout_marginBottom="?attr/actionBarSize"
in your NestedScrollView
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With