mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 21:29:54 +01:00
Use dodgeInsetEdges to make room for the snackbar.
This commit is contained in:
@@ -4,13 +4,18 @@ import android.support.annotation.ColorRes;
|
|||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.annotation.StringRes;
|
import android.support.annotation.StringRes;
|
||||||
import android.support.design.widget.Snackbar;
|
import android.support.design.widget.Snackbar;
|
||||||
|
import android.support.design.widget.Snackbar.Callback;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
|
|
||||||
|
import static android.os.Build.VERSION.SDK_INT;
|
||||||
|
import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE;
|
||||||
import static android.support.v4.content.ContextCompat.getColor;
|
import static android.support.v4.content.ContextCompat.getColor;
|
||||||
|
import static android.view.View.INVISIBLE;
|
||||||
|
import static android.view.View.VISIBLE;
|
||||||
|
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
public class BriarSnackbarBuilder {
|
public class BriarSnackbarBuilder {
|
||||||
@@ -30,6 +35,24 @@ public class BriarSnackbarBuilder {
|
|||||||
R.color.briar_button_text_positive));
|
R.color.briar_button_text_positive));
|
||||||
s.setAction(actionResId, onClickListener);
|
s.setAction(actionResId, onClickListener);
|
||||||
}
|
}
|
||||||
|
// Workaround for https://issuetracker.google.com/issues/64285517
|
||||||
|
if (duration == LENGTH_INDEFINITE && SDK_INT < 21) {
|
||||||
|
// Hide snackbar while it's opening to make bouncing less noticeable
|
||||||
|
s.getView().setVisibility(INVISIBLE);
|
||||||
|
s.addCallback(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onShown(Snackbar snackbar) {
|
||||||
|
snackbar.getView().setVisibility(VISIBLE);
|
||||||
|
// Request layout again in case snackbar is in wrong place
|
||||||
|
snackbar.getView().requestLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDismissed(Snackbar snackbar, int event) {
|
||||||
|
snackbar.getView().setVisibility(INVISIBLE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
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;
|
|
||||||
|
|
||||||
@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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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.SnackbarAwareBehavior"
|
app:layout_dodgeInsetEdges="bottom"
|
||||||
app:scrollToEnd="false"/>
|
app:scrollToEnd="false"/>
|
||||||
|
|
||||||
<io.github.kobakei.materialfabspeeddial.FabSpeedDial
|
<io.github.kobakei.materialfabspeeddial.FabSpeedDial
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
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="org.briarproject.briar.android.view.SnackbarAwareBehavior"/>
|
app:layout_behavior="org.briarproject.briar.android.view.DefaultBehavior"
|
||||||
|
app:layout_dodgeInsetEdges="bottom"/>
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
|||||||
Reference in New Issue
Block a user