diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index b58dbddab44f0..bcb32fb60f477 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -437,6 +437,9 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { resetViewVisibilitiesForWorkProfileEmptyState(emptyStateView); emptyStateView.setVisibility(View.VISIBLE); + View container = emptyStateView.findViewById(R.id.resolver_empty_state_container); + setupContainerPadding(container); + TextView title = emptyStateView.findViewById(R.id.resolver_empty_state_title); title.setText(titleRes); @@ -463,6 +466,12 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { activeListAdapter.markTabLoaded(); } + /** + * Sets up the padding of the view containing the empty state screens. + *
This method is meant to be overridden so that subclasses can customize the padding. + */ + protected void setupContainerPadding(View container) {} + private void showConsumerUserNoAppsAvailableEmptyState(ResolverListAdapter activeListAdapter) { ProfileDescriptor descriptor = getItem( userHandleToPageIndex(activeListAdapter.getUserHandle())); @@ -555,12 +564,6 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { } } - /** - * Callback called when the button layout has been hidden. - *
This method is meant to be overridden by subclasses. - */ - protected void onButtonLayoutHidden() { } - public interface OnProfileSelectedListener { /** * Callback for when the user changes the active tab from personal to work or vice versa. diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 84c833ea5ffe6..4ba6ce4e04ce4 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -1030,6 +1030,10 @@ public class ResolverActivity extends Activity implements if (isAutolaunching()) { return; } + if (isIntentPicker()) { + ((ResolverMultiProfilePagerAdapter) mMultiProfilePagerAdapter) + .setUseLayoutWithDefault(useLayoutWithDefault()); + } if (mMultiProfilePagerAdapter.shouldShowEmptyStateScreen(listAdapter)) { mMultiProfilePagerAdapter.showEmptyResolverListEmptyState(listAdapter); } else { @@ -1782,13 +1786,14 @@ public class ResolverActivity extends Activity implements if (buttonBarDivider != null) { buttonBarDivider.setVisibility(View.INVISIBLE); } - mMultiProfilePagerAdapter.onButtonLayoutHidden(); + setButtonBarIgnoreOffset(/* ignoreOffset */ false); return; } if (buttonBarDivider != null) { buttonBarDivider.setVisibility(View.VISIBLE); } buttonLayout.setVisibility(View.VISIBLE); + setButtonBarIgnoreOffset(/* ignoreOffset */ true); if (!useLayoutWithDefault()) { int inset = mSystemWindowInsets != null ? mSystemWindowInsets.bottom : 0; @@ -1802,6 +1807,21 @@ public class ResolverActivity extends Activity implements resetAlwaysOrOnceButtonBar(); } + /** + * Updates the button bar container {@code ignoreOffset} layout param. + *
Setting this to {@code true} means that the button bar will be glued to the bottom of
+ * the screen.
+ */
+ private void setButtonBarIgnoreOffset(boolean ignoreOffset) {
+ View buttonBarContainer = findViewById(R.id.button_bar_container);
+ if (buttonBarContainer != null) {
+ ResolverDrawerLayout.LayoutParams layoutParams =
+ (ResolverDrawerLayout.LayoutParams) buttonBarContainer.getLayoutParams();
+ layoutParams.ignoreOffset = ignoreOffset;
+ buttonBarContainer.setLayoutParams(layoutParams);
+ }
+ }
+
private void resetAlwaysOrOnceButtonBar() {
// Disable both buttons initially
setAlwaysButtonEnabled(false, ListView.INVALID_POSITION, false);
diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
index 5e2470ed96511..b4f9f08e37716 100644
--- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
@@ -36,6 +36,7 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
private final ResolverProfileDescriptor[] mItems;
private final boolean mShouldShowNoCrossProfileIntentsEmptyState;
+ private boolean mUseLayoutWithDefault;
ResolverMultiProfilePagerAdapter(Context context,
ResolverListAdapter adapter,
@@ -213,13 +214,15 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA
/* subtitleRes */ 0);
}
+ void setUseLayoutWithDefault(boolean useLayoutWithDefault) {
+ mUseLayoutWithDefault = useLayoutWithDefault;
+ }
+
@Override
- protected void onButtonLayoutHidden() {
- View emptyStateContainer = getItem(getCurrentPage()).getEmptyStateView()
- .findViewById(R.id.resolver_empty_state_container);
- emptyStateContainer.setPadding(emptyStateContainer.getPaddingLeft(),
- emptyStateContainer.getPaddingTop(), emptyStateContainer.getPaddingRight(),
- /* bottom */ 0);
+ protected void setupContainerPadding(View container) {
+ int bottom = mUseLayoutWithDefault ? container.getPaddingBottom() : 0;
+ container.setPadding(container.getPaddingLeft(), container.getPaddingTop(),
+ container.getPaddingRight(), bottom);
}
class ResolverProfileDescriptor extends ProfileDescriptor {
diff --git a/core/res/res/layout/resolver_list.xml b/core/res/res/layout/resolver_list.xml
index 76ecefc67c22c..4d0837f495dfb 100644
--- a/core/res/res/layout/resolver_list.xml
+++ b/core/res/res/layout/resolver_list.xml
@@ -113,11 +113,13 @@