From 87348253466621e46c9891bdbad74a5509fbc89e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 28 Jun 2019 12:32:09 -0300 Subject: [PATCH] [android] prevent pending contacts snackbar from covering contact list --- .../view/BriarRecyclerViewBehavior.java | 35 ++++++++++--------- .../main/res/layout/fragment_contact_list.xml | 5 ++- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewBehavior.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewBehavior.java index c2226ec51..2f82d5d08 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewBehavior.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewBehavior.java @@ -2,10 +2,14 @@ package org.briarproject.briar.android.view; import android.content.Context; import android.support.design.widget.CoordinatorLayout; +import android.support.design.widget.CoordinatorLayout.LayoutParams; import android.support.design.widget.Snackbar; import android.util.AttributeSet; import android.view.View; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +@NotNullByDefault public class BriarRecyclerViewBehavior extends CoordinatorLayout.Behavior { @@ -15,30 +19,27 @@ public class BriarRecyclerViewBehavior @Override public boolean onDependentViewChanged(CoordinatorLayout parent, - BriarRecyclerView child, View dependency) { - - // FIXME the below code works, but does not reset margin when snackbar is dismissed -/* - int margin = 0; - if (dependency.isShown()) margin = dependency.getHeight(); - - // set snackbar height as bottom margin if it is shown - CoordinatorLayout.LayoutParams params = - (CoordinatorLayout.LayoutParams) child.getLayoutParams(); - params.setMargins(0, 0, 0, margin); - child.setLayoutParams(params); - - child.scrollToPosition(0); -*/ + BriarRecyclerView child, View snackbar) { + setMargin(child, snackbar.getHeight()); return true; } + @Override + public void onDependentViewRemoved(CoordinatorLayout parent, + BriarRecyclerView child, View snackbar) { + setMargin(child, 0); + } + @Override public boolean layoutDependsOn(CoordinatorLayout parent, BriarRecyclerView child, View dependency) { - // we only want to trigger the change - // only when the changes is from a snackbar return dependency instanceof Snackbar.SnackbarLayout; } + private void setMargin(View child, int margin) { + LayoutParams params = (LayoutParams) child.getLayoutParams(); + params.setMargins(0, 0, 0, margin); + child.setLayoutParams(params); + } + } diff --git a/briar-android/src/main/res/layout/fragment_contact_list.xml b/briar-android/src/main/res/layout/fragment_contact_list.xml index 327dc493c..824d3cba3 100644 --- a/briar-android/src/main/res/layout/fragment_contact_list.xml +++ b/briar-android/src/main/res/layout/fragment_contact_list.xml @@ -9,6 +9,7 @@ android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" + app:layout_behavior="org.briarproject.briar.android.view.BriarRecyclerViewBehavior" app:scrollToEnd="false"/> + app:fab_miniFabTextColor="@android:color/white" + app:layout_anchorGravity="bottom|right|end" + app:layout_behavior="io.github.kobakei.materialfabspeeddial.FabSpeedDial$Behavior"/>