2

'a ekledikten sonra son projemde Android Materyal Tasarım Kitaplığı'nı keşfettim. Oldukça güçlü ve onunla çalışmaktan zevk aldım. FloatingActionButton'uma özel bir davranış ekledim, bu yüzden aşağı doğru kaydırırken kayboluyor. Şimdi bahsettim, eğer bir SnackBar gösteriliyorsa, FAB'in pozisyonu artık otomatik olarak ele alınmıyor.Birden fazla davranışı bir FloatingActionButton

Bazı hata ayıklama işleminden sonra, ankrajın geri dönüştürücüye ayarlanması ve SnackBar'a bağlı olarak CoordinatorLayout öğesinden varsayılan davranışı kaydırmak için customBehaviour eklendiğini öğrendim.

Kendime soruyorum, FAB'ım için tek bir Davranış daha ekleyebilir miyim? Ya da bir şekilde söyleyeyim, eksik olanın üzerine yazılmamalı, fakat uzatılmalı mı? Veya bunlardan daha fazlasını yazabilir miyim?

@Override 
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { 
    return dependency instanceof RecyclerView; 
} 

cevap

0

Tamam, istediği davranışı gerçekleştirmek için bir yöntem buldum ama bir cevap daha bir çözüm daha var. Böyle Java Kanununda programlı Scrollbehavior eklerseniz

:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      if (newState == RecyclerView.SCROLL_STATE_IDLE) { 
       sendMailFAB.show(); 
      } 
      super.onScrollStateChanged(recyclerView, newState); 
     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      if (dy > 0 && sendMailFAB.isShown()) 
       sendMailFAB.hide(); 
     } 
    }); 

Ve sonra özel davranışı silmek ve onu .xml dosyasında kelepçe, CoordinatorLayout varsayılan davranışı Snackbar ve onScrollListener kolları kaydırma davranışı.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/fragment_coordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="de.flowment.designExample.StartActivity"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/startRecyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="vertical"> 

    </android.support.v7.widget.RecyclerView> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:layout_anchorGravity="bottom|end" 
     android:src="@android:drawable/ic_dialog_email" /> 

    <!-- DELETE THIS PART, BECAUSE IT'S NOT USED ANYMORE AND BLOCKS THE DEFAULT. 
    app:layout_anchor="@id/startRecyclerView" 
    app:layout_behavior="de.flowment.designExample.FABScrollBehavior" />--> 


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

Bu yüzden iki davranış yaptım, ama bunun daha fazla bir çözüm olduğunu söylediğim gibi.