From 416a1b347c17133d684c3d94b745c0736176d686 Mon Sep 17 00:00:00 2001 From: arangelov Date: Thu, 4 Jun 2020 13:57:06 +0100 Subject: [PATCH] Show 2nd row if we have 1 row in active profile and empty state in other Fixes: 157982025 Test: manual Test: atest ChooserActivityTest Test: atest ResolverActivityTest Change-Id: Ifa525bad5d89d2ea6192044c6e2bb63310c57693 --- .../android/internal/app/ChooserActivity.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 6a40fb8775b32..6f953f918050b 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -2648,6 +2648,7 @@ public class ChooserActivity extends ResolverActivity implements if (recyclerView.getVisibility() == View.VISIBLE) { int directShareHeight = 0; rowsToShow = Math.min(4, rowsToShow); + boolean shouldShowExtraRow = shouldShowExtraRow(rowsToShow); mLastNumberOfChildren = recyclerView.getChildCount(); for (int i = 0, childCount = recyclerView.getChildCount(); i < childCount && rowsToShow > 0; i++) { @@ -2658,6 +2659,9 @@ public class ChooserActivity extends ResolverActivity implements } int height = child.getHeight(); offset += height; + if (shouldShowExtraRow) { + offset += height; + } if (gridAdapter.getTargetType( recyclerView.getChildAdapterPosition(child)) @@ -2692,6 +2696,18 @@ public class ChooserActivity extends ResolverActivity implements } } + /** + * If we have a tabbed view and are showing 1 row in the current profile and an empty + * state screen in the other profile, to prevent cropping of the empty state screen we show + * a second row in the current profile. + */ + private boolean shouldShowExtraRow(int rowsToShow) { + return shouldShowTabs() + && rowsToShow == 1 + && mChooserMultiProfilePagerAdapter.shouldShowEmptyStateScreen( + mChooserMultiProfilePagerAdapter.getInactiveListAdapter()); + } + /** * Returns {@link #PROFILE_PERSONAL}, {@link #PROFILE_WORK}, or -1 if the given user handle * does not match either the personal or work user handle.