From 53a6da1a158b6de065035397fedc49d2e015bd3e Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 8 Jul 2021 15:34:02 +0200 Subject: [PATCH] Added scroll offset --- .../java/eu/faircode/email/FragmentBase.java | 21 ++++++++++++------- .../eu/faircode/email/FragmentOptions.java | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentBase.java b/app/src/main/java/eu/faircode/email/FragmentBase.java index 31dbcd7fa0..5c3dd16a4e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentBase.java @@ -38,7 +38,6 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewParent; import android.view.inputmethod.InputMethodManager; import android.widget.ScrollView; import android.widget.TextView; @@ -76,7 +75,8 @@ public class FragmentBase extends Fragment { private boolean finished = false; private String requestKey = null; - private int scrollTo = 0; + private int scrollToResid = 0; + private int scrollToOffset = 0; private static int requestSequence = 0; @@ -105,13 +105,14 @@ public class FragmentBase extends Fragment { updateSubtitle(); } - void scrollTo(int resid) { - scrollTo = resid; + void scrollTo(int resid, int offset) { + scrollToResid = resid; + scrollToOffset = offset; scrollTo(); } private void scrollTo() { - if (scrollTo == 0) + if (scrollToResid == 0) return; View view = getView(); @@ -122,11 +123,12 @@ public class FragmentBase extends Fragment { if (scroll == null) return; - final View child = scroll.findViewById(scrollTo); + final View child = scroll.findViewById(scrollToResid); if (child == null) return; - scrollTo = 0; + scrollToResid = 0; + final int dy = Helper.dp2pixels(scroll.getContext(), scrollToOffset); scroll.post(new Runnable() { @Override @@ -134,7 +136,10 @@ public class FragmentBase extends Fragment { Rect rect = new Rect(); child.getDrawingRect(rect); scroll.offsetDescendantRectToMyCoords(child, rect); - scroll.scrollTo(0, rect.top - scroll.getPaddingTop()); + int y = rect.top - scroll.getPaddingTop() + dy; + if (y < 0) + y = 0; + scroll.scrollTo(0, y); } }); } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptions.java b/app/src/main/java/eu/faircode/email/FragmentOptions.java index 803eb571c2..108c6cfb78 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptions.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptions.java @@ -260,7 +260,7 @@ public class FragmentOptions extends FragmentBase { pager.setCurrentItem(tab); FragmentBase fragment = (FragmentBase) adapter.instantiateItem(pager, tab); - fragment.scrollTo(resid); + fragment.scrollTo(resid, -48); menuSearch.collapseActionView(); // Blink found text