7

C'è uno schema che descrive la gerarchia di visualizzazione della mia applicazione.Snackbar non in movimento FAB inserito all'interno di Fragment

Example

E alcuni 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> 

Con questa c Ode Faccio SnackBar:

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

Il mio problema è che fab non si muove da SnackBar che faccio in ContentFragment

Ho provato anche punto fab come vista per Snackbar ma non ha portato risultati.

+0

avvolgere il contenuto di Framelayout con un CoordinatorLayout –

risposta

4

È necessario utilizzare CoordinatorLayout per evitare questo problema perché il solo CoordinatorLayout coordina correttamente le modifiche al layout causate dalle relative viste secondarie.

Per risolvere il problema, è sufficiente spostare FloatingActionButton dal layout del frammento al layout MainActivity. Oppure, se si intende utilizzare il FloatingActionButton nel frammento per sé, quindi impostare la vista padre del frammento di essere un CoordinatorLayout

+0

Buona risposta. Ora ho spostato 'FloatingActionButton' in' MainActivity' e ne ho fatto un getter. Grazie. – Alexandr

1

Perché ciò funzioni, FloatingActionButton deve essere un figlio di CoordinatorLayout. Il tuo è un figlio di FrameLayout.

+0

E non c'è modo per costringerlo a lavorare con sub- visualizzazioni? – Alexandr