Blenden Sie den FloatingActionButton in Scroll von RecyclerView aus
Möchte ich zum ein - /ausblenden FloatingActionButton
auf Blättern von RecyclerView
.
XML
:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_eventlist"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_createevent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
app:layout_anchor="@id/recyclerview_eventlist"
app:layout_anchorGravity="bottom|right|end"
app:layout_behavior="com.eventizon.behavior.ScrollAwareFABBehavior"
android:src="@drawable/ic_edit"
app:backgroundTint="@color/custom_color_1"
app:borderWidth="0dp" />
</android.support.design.widget.CoordinatorLayout>
DrawerLayout ist das übergeordnete layout-dieses layout.
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
private static final String TAG = "ScrollAwareFABBehavior";
public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
super();
Log.e(TAG,"ScrollAwareFABBehavior");
}
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View target, int dxConsumed,
int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
//TODO Auto-generated method stub
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed,
dxUnconsumed, dyUnconsumed);
Log.e(TAG,"onNestedScroll called");
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
Log.e(TAG,"child.hide()");
child.hide();
} else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
Log.e(TAG,"child.show()");
child.show();
}
}
}
Verwendet das layout Verhalten für FloatingActionButton
. Wenn ich sehe logcat
nur Konstruktor wird immer aufgerufen. onNestedScroll()
nicht aufgerufen, wenn ich durch die Liste scrollen.
InformationsquelleAutor der Frage Pritam Kadam | 2015-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, hier ist was Sie brauchen:
Erste, da Ihr FAB hängt von der
RecyclerView
fügen Sie den folgenden, um Ihr Verhalten Klasse:Weiter, um zu empfangen
onNestedScroll()
Anrufe, die Sie außer Kraft setzen müssen:Glück!
Update
Hier ist das, was Ihr
ScrollAwareFABBehavior
Aussehen sollte:Es wurde auch getestet, mit
com.android.support:design:23.0.1
InformationsquelleAutor der Antwort Ari
Einfachste Lösung:
InformationsquelleAutor der Antwort Daniel
Sollte diese Arbeit für Sie:
InformationsquelleAutor der Antwort FaraAndroid
Dies ist, wie ich es Tat. Es funktioniert für mich! Wenn Sie nicht wissen, wie zu implementieren ist, können Sie finden Sie ausführlich in diesem link https://guides.codepath.com/android/floating-action-buttons
InformationsquelleAutor der Antwort ThetNaing Mizo
Kurze und Einfache Lösung:
InformationsquelleAutor der Antwort Yash Parikh
Habe ich eine benutzerdefinierte RecyclerView die
OnUpDownScrollListener
OnLeftRightScrollListener
bereit:Code:
MBRecyclerView.java
Nutzung (UpDownScrollListener):
similarely du kannst mit der LeftRight scrollen durch die Einstellung
Ich hoffe, es kann jemand helfen 🙂
InformationsquelleAutor der Antwort MBH
Die Lösung ist: F. A. B Verbirgt sich aber nicht Zeigen
Das problem ist Android 25.0.x+ legt die Ansicht auf GEGANGEN und das ist, warum die listener nicht über änderungen.
InformationsquelleAutor der Antwort Ivor
//lv = ListView
InformationsquelleAutor der Antwort FCF75
Habe ich diese in einer RecyclerView.Adapter ist onBindViewHolder Methode, um den unteren Rand des letzten Elements in der Liste zu 72dp, so dass es wird ein Bildlauf nach oben über dem floating-action-button.
Dies bedeutet nicht, dass ein dummy-Eintrag in der Liste.
InformationsquelleAutor der Antwort Naveen Kumar M
Alle Antworten, die geht auf das Verhalten Weg und onNestedScroll (statt recyclerview listener) keine Bemerkung über die Tatsache, dass onNestedScroll werden viele Male aufgerufen werden, beim scrollen. Dies bedeutet, dass das Kind.show() und Kind.hide() aufgerufen wird, werden viele mal so gut. Obwohl die show() und hide() werden entworfen, um zu behandeln, das Szenario, Sie führen immer noch eine Menge code, und erstellen Sie einige Objekte, die multipliziert mit den Zeiten onNestedScroll aufgerufen wird, das Ergebnis in eine Menge von Objekten erstellt unnötig.
Wenn man bedenkt, dass, und weil ich wollte eine andere animation anstelle des Standard-show() und hide(), ich kam mit dem folgenden Verhalten Umsetzung:
InformationsquelleAutor der Antwort Francisco Junior
Versuchen, diese
genießen.
InformationsquelleAutor der Antwort AITAALI_ABDERRAHMANE