Alexandr
Alexandr

Reputation: 3969

Snackbar not moving FAB that placed inside Fragment

There is a scheme that describes view hierarchy of my application.

Example

And some XML

MainActivity

. CoordinatorLayout
  . FrameLayout <- ContentFragment inserted here
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
  . AppBarLayout
    . Toolbar

ContentFragment

<FrameLayout
    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.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"/>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:src="@drawable/ic_plus_white_36dp"
        android:layout_gravity="bottom|end"
        android:layout_margin="15dp"
        app:elevation="6dp"
        app:pressedTranslationZ="12dp"/>

    <TextView
        android:id="@+id/hint_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/empty_dates_list"
        android:padding="20dp"
        android:textSize="20sp"
        android:layout_gravity="center" />

</FrameLayout>

With this code I make SnackBar:

Snackbar snackbar = Snackbar.make(
        mainActivity.getCoordinatorLayout(),
        R.string.date_removed,
        Snackbar.LENGTH_LONG);

My problem is that fab is not moving up by SnackBar that I make in ContentFragment

I also tried point fab as view for Snackbar but it has not brought results.

Upvotes: 11

Views: 2412

Answers (2)

poss
poss

Reputation: 1789

For this to work, FloatingActionButton should be a child of CoordinatorLayout. Yours is a child of FrameLayout.

Upvotes: 2

TeChNo_DeViL
TeChNo_DeViL

Reputation: 739

You should use CoordinatorLayout to avoid this issue because CoordinatorLayout alone properly coordinates layout changes caused by its child views.

To solve your issue, simply move the FloatingActionButton from the fragment layout to the MainActivity layout. Or if you intend to use the FloatingActionButton in the fragment itself, then set the parent view of the fragment to be a CoordinatorLayout

Upvotes: 6

Related Questions