summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorZhen Zhang <zzhen@google.com>2020-07-15 11:16:54 -0700
committerZhen Zhang <zzhen@google.com>2020-07-16 14:06:35 -0700
commit068ddf7b06a81244bb1e52db72e387c70bf724ef (patch)
tree02bb41b929e3ed75a1dd41451b453115c0dd9384 /core/java
parent83d9908e54f34c9afbe2fa0c506f3c272797511c (diff)
Scroll the hiding page to top on tab changed in sharesheet
After the tab changed, ResolverDrawerLayout will lose reference of the hidden page which can cause the page not able to scoll back to top. Automatically scroll on tab changed to avoid that situation. Bug: 160886554 Test: manually test; atest ChooserActivityTest; atest ResolverActivityTest Change-Id: I1a8ba72f6b1dcb9bca19262b97983788001d715b
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java1
-rw-r--r--core/java/com/android/internal/widget/ResolverDrawerLayout.java17
2 files changed, 13 insertions, 5 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index fbf050ad08f6..3a89dcd96487 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -3134,6 +3134,7 @@ public class ChooserActivity extends ResolverActivity implements
// ends up disabled. That's because at some point the old tab's vertical scrolling is
// disabled and the new tab's is enabled. For context, see b/159997845
setVerticalScrollEnabled(true);
+ mResolverDrawerLayout.scrollNestedScrollableChildBackToTop();
}
@Override
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
index 3f708f84750c..90eeabb47e9a 100644
--- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java
+++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
@@ -464,11 +464,7 @@ public class ResolverDrawerLayout extends ViewGroup {
smoothScrollTo(mCollapsibleHeight + mUncollapsibleHeight, yvel);
mDismissOnScrollerFinished = true;
} else {
- if (isNestedListChildScrolled()) {
- mNestedListChild.smoothScrollToPosition(0);
- } else if (isNestedRecyclerChildScrolled()) {
- mNestedRecyclerChild.smoothScrollToPosition(0);
- }
+ scrollNestedScrollableChildBackToTop();
smoothScrollTo(yvel < 0 ? 0 : mCollapsibleHeight, yvel);
}
}
@@ -493,6 +489,17 @@ public class ResolverDrawerLayout extends ViewGroup {
return handled;
}
+ /**
+ * Scroll nested scrollable child back to top if it has been scrolled.
+ */
+ public void scrollNestedScrollableChildBackToTop() {
+ if (isNestedListChildScrolled()) {
+ mNestedListChild.smoothScrollToPosition(0);
+ } else if (isNestedRecyclerChildScrolled()) {
+ mNestedRecyclerChild.smoothScrollToPosition(0);
+ }
+ }
+
private void onSecondaryPointerUp(MotionEvent ev) {
final int pointerIndex = ev.getActionIndex();
final int pointerId = ev.getPointerId(pointerIndex);