mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
Restore custom layout behaviour for handling snackbar.
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
package org.briarproject.briar.android.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.design.widget.CoordinatorLayout.Behavior;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
@NotNullByDefault
|
||||
public class DefaultBehavior<V extends View> extends Behavior<V> {
|
||||
|
||||
public DefaultBehavior(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package org.briarproject.briar.android.view;
|
||||
|
||||
import android.content.Context;
|
||||
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.Snackbar.SnackbarLayout;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
/**
|
||||
* This behavior makes room for a snackbar at the bottom of the screen. The
|
||||
* proper solution is to use layout_dodgeInsetEdges="bottom", but when used on
|
||||
* a scrollable view that results in the view being pushed under the app bar
|
||||
* (see https://issuetracker.google.com/issues/116541304).
|
||||
*/
|
||||
@NotNullByDefault
|
||||
public class SnackbarAwareBehavior<V extends View> extends Behavior<V> {
|
||||
|
||||
public SnackbarAwareBehavior(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDependentViewChanged(CoordinatorLayout parent,
|
||||
V child, View snackbar) {
|
||||
setMargin(child, snackbar.getHeight());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDependentViewRemoved(CoordinatorLayout parent,
|
||||
V child, View snackbar) {
|
||||
setMargin(child, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean layoutDependsOn(CoordinatorLayout parent,
|
||||
V child, View dependency) {
|
||||
return dependency instanceof SnackbarLayout;
|
||||
}
|
||||
|
||||
private void setMargin(V child, int margin) {
|
||||
LayoutParams params = (LayoutParams) child.getLayoutParams();
|
||||
params.setMargins(0, 0, 0, margin);
|
||||
child.setLayoutParams(params);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user