diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index c8f5be43c04e3..493865ac563f9 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -340,6 +340,30 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { protected abstract void showNoWorkToPersonalIntentsEmptyState( ResolverListAdapter activeListAdapter); + /** + * Updates padding and visibilities as a result of an orientation change. + *

They are not updated automatically, because the view is cached when created. + *

When overridden, make sure to always call the super method. + */ + void updateAfterConfigChange() { + for (int i = 0; i < getItemCount(); i++) { + ViewGroup emptyStateView = getItem(i).getEmptyStateView(); + ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon); + updateIconVisibility(icon, emptyStateView); + } + } + + private void updateIconVisibility(ImageView icon, ViewGroup emptyStateView) { + if (isSpinnerShowing(emptyStateView)) { + icon.setVisibility(View.INVISIBLE); + } else if (mWorkProfileUserHandle != null + && !getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) { + icon.setVisibility(View.VISIBLE); + } else { + icon.setVisibility(View.GONE); + } + } + /** * The empty state screens are shown according to their priority: *

    @@ -441,7 +465,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { ProfileDescriptor descriptor = getItem( userHandleToPageIndex(activeListAdapter.getUserHandle())); descriptor.rootView.findViewById(R.id.resolver_list).setVisibility(View.GONE); - View emptyStateView = descriptor.getEmptyStateView(); + ViewGroup emptyStateView = descriptor.getEmptyStateView(); resetViewVisibilitiesForWorkProfileEmptyState(emptyStateView); emptyStateView.setVisibility(View.VISIBLE); @@ -464,12 +488,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { button.setOnClickListener(buttonOnClick); ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon); - if (!getContext().getResources().getBoolean(R.bool.resolver_landscape_phone)) { - icon.setVisibility(View.VISIBLE); - icon.setImageResource(iconRes); - } else { - icon.setVisibility(View.GONE); - } + icon.setImageResource(iconRes); + updateIconVisibility(icon, emptyStateView); activeListAdapter.markTabLoaded(); } @@ -491,6 +511,11 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { activeListAdapter.markTabLoaded(); } + private boolean isSpinnerShowing(View emptyStateView) { + return emptyStateView.findViewById(R.id.resolver_empty_state_progress).getVisibility() + == View.VISIBLE; + } + private void showSpinner(View emptyStateView) { emptyStateView.findViewById(R.id.resolver_empty_state_icon).setVisibility(View.INVISIBLE); emptyStateView.findViewById(R.id.resolver_empty_state_title).setVisibility(View.INVISIBLE); diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index ff8fd50f308cd..b82f0dfcbe12d 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -642,6 +642,9 @@ public class ResolverActivity extends Activity implements public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged(); + if (isIntentPicker() && shouldShowTabs() && !useLayoutWithDefault()) { + updateIntentPickerPaddings(); + } if (mSystemWindowInsets != null) { mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top, @@ -649,6 +652,22 @@ public class ResolverActivity extends Activity implements } } + private void updateIntentPickerPaddings() { + View titleCont = findViewById(R.id.title_container); + titleCont.setPadding( + titleCont.getPaddingLeft(), + titleCont.getPaddingTop(), + titleCont.getPaddingRight(), + getResources().getDimensionPixelSize(R.dimen.resolver_title_padding_bottom)); + View buttonBar = findViewById(R.id.button_bar); + buttonBar.setPadding( + buttonBar.getPaddingLeft(), + getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing), + buttonBar.getPaddingRight(), + getResources().getDimensionPixelSize(R.dimen.resolver_button_bar_spacing)); + mMultiProfilePagerAdapter.updateAfterConfigChange(); + } + @Override // ResolverListCommunicator public void sendVoiceChoicesIfNeeded() { if (!isVoiceInteraction()) { diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java index b4f9f08e37716..2464fc737a1fc 100644 --- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java @@ -18,6 +18,7 @@ package com.android.internal.app; import android.annotation.Nullable; import android.content.Context; +import android.content.res.Resources; import android.os.UserHandle; import android.view.LayoutInflater; import android.view.View; @@ -65,6 +66,24 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA mShouldShowNoCrossProfileIntentsEmptyState = shouldShowNoCrossProfileIntentsEmptyState; } + @Override + void updateAfterConfigChange() { + super.updateAfterConfigChange(); + for (ResolverProfileDescriptor descriptor : mItems) { + View emptyStateCont = + descriptor.rootView.findViewById(R.id.resolver_empty_state_container); + Resources resources = getContext().getResources(); + emptyStateCont.setPadding( + emptyStateCont.getPaddingLeft(), + resources.getDimensionPixelSize( + R.dimen.resolver_empty_state_container_padding_top), + emptyStateCont.getPaddingRight(), + resources.getDimensionPixelSize( + R.dimen.resolver_empty_state_container_padding_bottom)); + + } + } + private ResolverProfileDescriptor createProfileDescriptor( ResolverListAdapter adapter) { final LayoutInflater inflater = LayoutInflater.from(getContext()); diff --git a/core/res/res/layout/resolver_empty_states.xml b/core/res/res/layout/resolver_empty_states.xml index 196a0e8654051..bdcfeb21598a1 100644 --- a/core/res/res/layout/resolver_empty_states.xml +++ b/core/res/res/layout/resolver_empty_states.xml @@ -27,8 +27,8 @@ android:id="@+id/resolver_empty_state_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="48dp" - android:paddingBottom="48dp" + android:paddingTop="@dimen/resolver_empty_state_container_padding_top" + android:paddingBottom="@dimen/resolver_empty_state_container_padding_bottom" android:gravity="center_horizontal"> + + + + 48dp + 48dp + @dimen/resolver_edge_margin + 8dp + \ No newline at end of file diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 9ca163f3be7f9..aa023b6e7777a 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -815,7 +815,7 @@ 56dp 22dp 32dp - 8dp + 0dp 18dp 16dp 18dp @@ -828,6 +828,9 @@ 144dp 300dp 14sp + 0dp + 8dp + 8dp 18dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index ddd926bf32f6a..5026e11961134 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3962,6 +3962,7 @@ + @@ -3985,6 +3986,9 @@ + + +