X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2FFabManager.java;h=a693a25a1f18befad94acd84c6adf0a26b8b4406;hb=1c96f31e5580b00e4bde95cf4f742c6fcacaed53;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..a693a25a 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; @@ -141,16 +140,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();