Use snackbar-aware behaviour for FAB.

This commit is contained in:
Torsten Grote
2019-07-01 18:44:47 +02:00
committed by akwizgran
parent 8734825346
commit 28f82a1507
2 changed files with 11 additions and 12 deletions

View File

@@ -2,44 +2,43 @@ package org.briarproject.briar.android.view;
import android.content.Context; import android.content.Context;
import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.CoordinatorLayout.Behavior;
import android.support.design.widget.CoordinatorLayout.LayoutParams; import android.support.design.widget.CoordinatorLayout.LayoutParams;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar.SnackbarLayout;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
@NotNullByDefault @NotNullByDefault
public class BriarRecyclerViewBehavior public class SnackbarAwareBehavior<V extends View> extends Behavior<V> {
extends CoordinatorLayout.Behavior<BriarRecyclerView> {
public BriarRecyclerViewBehavior(Context context, AttributeSet attrs) { public SnackbarAwareBehavior(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
} }
@Override @Override
public boolean onDependentViewChanged(CoordinatorLayout parent, public boolean onDependentViewChanged(CoordinatorLayout parent,
BriarRecyclerView child, View snackbar) { V child, View snackbar) {
setMargin(child, snackbar.getHeight()); setMargin(child, snackbar.getHeight());
return true; return true;
} }
@Override @Override
public void onDependentViewRemoved(CoordinatorLayout parent, public void onDependentViewRemoved(CoordinatorLayout parent,
BriarRecyclerView child, View snackbar) { V child, View snackbar) {
setMargin(child, 0); setMargin(child, 0);
} }
@Override @Override
public boolean layoutDependsOn(CoordinatorLayout parent, public boolean layoutDependsOn(CoordinatorLayout parent,
BriarRecyclerView child, View dependency) { V child, View dependency) {
return dependency instanceof Snackbar.SnackbarLayout; return dependency instanceof SnackbarLayout;
} }
private void setMargin(View child, int margin) { private void setMargin(V child, int margin) {
LayoutParams params = (LayoutParams) child.getLayoutParams(); LayoutParams params = (LayoutParams) child.getLayoutParams();
params.setMargins(0, 0, 0, margin); params.setMargins(0, 0, 0, margin);
child.setLayoutParams(params); child.setLayoutParams(params);
} }
} }

View File

@@ -9,7 +9,7 @@
android:id="@+id/list" android:id="@+id/list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_behavior="org.briarproject.briar.android.view.BriarRecyclerViewBehavior" app:layout_behavior="org.briarproject.briar.android.view.SnackbarAwareBehavior"
app:scrollToEnd="false"/> app:scrollToEnd="false"/>
<io.github.kobakei.materialfabspeeddial.FabSpeedDial <io.github.kobakei.materialfabspeeddial.FabSpeedDial
@@ -22,6 +22,6 @@
app:fab_miniFabTextBackground="@color/briar_accent" app:fab_miniFabTextBackground="@color/briar_accent"
app:fab_miniFabTextColor="@android:color/white" app:fab_miniFabTextColor="@android:color/white"
app:layout_anchorGravity="bottom|right|end" app:layout_anchorGravity="bottom|right|end"
app:layout_behavior="io.github.kobakei.materialfabspeeddial.FabSpeedDial$Behavior"/> app:layout_behavior="org.briarproject.briar.android.view.SnackbarAwareBehavior"/>
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>