X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2FFabManager.java;h=249c5d844352945a02d40396ed47486f5a97f59d;hb=abc2cfe2c435d10ade2533d09eccab9a32f5bba6;hp=b9165344ad062dc238e3ee3bbec0dc45a2a89db7;hpb=d63a611dce420b30fa0c0711eea1d02603945a43;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/FabManager.java b/app/src/main/java/net/ktnx/mobileledger/ui/FabManager.java index b9165344..249c5d84 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/FabManager.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/FabManager.java @@ -23,8 +23,7 @@ import android.animation.TimeInterpolator; import android.annotation.SuppressLint; import android.content.Context; import android.view.MotionEvent; -import android.view.View; -import android.view.ViewParent; +import android.view.ViewGroup; import android.view.ViewPropertyAnimator; import androidx.annotation.NonNull; @@ -76,7 +75,8 @@ public class FabManager { break; final float absoluteY = e.getRawY(); -// Logger.debug("touch", String.format(Locale.US, "Move to %4.2f", absoluteY)); +// Logger.debug("touch", String.format(Locale.US, "Move to %4.2f", +// absoluteY)); if (absoluteY > absoluteAnchor + triggerAbsolutePixels) { // swipe down @@ -141,16 +141,20 @@ public class FabManager { private void calcVerticalFabOffset() { if (fabVerticalOffset > 0) return;// already calculated - int top = fab.getTop(); - ViewParent parent = fab.getParent(); - while (parent != null && !(parent instanceof View)) - parent = parent.getParent(); - - if (parent instanceof View) { - View parentView = (View) parent; - int parentHeight = parentView.getHeight(); - fabVerticalOffset = parentHeight - top; - } + fab.measure(0, 0); + + int height = fab.getMeasuredHeight(); + + int bottomMargin; + + ViewGroup.LayoutParams layoutParams = fab.getLayoutParams(); + if (layoutParams instanceof ViewGroup.MarginLayoutParams) + bottomMargin = ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin; + else + throw new RuntimeException("Unsupported layout params " + layoutParams.getClass() + .getCanonicalName()); + + fabVerticalOffset = height + bottomMargin; } public interface FabHandler { Context getContext();