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 @@
+
+
+