diff --git a/res/layout/accessibility_text_reading_preview.xml b/res/layout/accessibility_text_reading_preview.xml index f76bb1ccfe7..95ea2e42349 100644 --- a/res/layout/accessibility_text_reading_preview.xml +++ b/res/layout/accessibility_text_reading_preview.xml @@ -19,17 +19,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingVertical="@dimen/settingslib_illustration_padding" - android:paddingEnd="@dimen/text_reading_preview_padding_end" - android:paddingStart="@dimen/text_reading_preview_padding_start"> + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:paddingStart="?android:attr/listPreferredItemPaddingStart"> + android:padding="18dp"> 300dp - 64dp - 64dp - 72dp + 64dp + 72dp + + 24dp + 24dp diff --git a/res/values/dimens.xml b/res/values/dimens.xml index fc202a5e989..6c03955c1e4 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -223,10 +223,14 @@ 11dp - @*android:dimen/list_item_padding_end_material - @*android:dimen/list_item_padding_end_material - 18dp - 18dp + + @*android:dimen/list_item_padding_start_material + 18dp + + + @dimen/text_reading_preview_layout_padding_horizontal_min + + @dimen/text_reading_preview_background_padding_horizontal_min 16dp diff --git a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java index 450aecad3f6..a90af2182f7 100644 --- a/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java +++ b/src/com/android/settings/accessibility/TextReadingPreferenceFragment.java @@ -62,7 +62,7 @@ public class TextReadingPreferenceFragment extends DashboardFragment { static final String BOLD_TEXT_KEY = "toggle_force_bold_text"; static final String HIGH_TEXT_CONTRAST_KEY = "toggle_high_text_contrast_preference"; static final String RESET_KEY = "reset"; - private static final String PREVIEW_KEY = "preview"; + static final String PREVIEW_KEY = "preview"; private static final String NEED_RESET_SETTINGS = "need_reset_settings"; private static final String LAST_PREVIEW_INDEX = "last_preview_index"; private static final int UNKNOWN_INDEX = -1; diff --git a/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizard.java index 783696d1392..11be73c7d3d 100644 --- a/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizard.java +++ b/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizard.java @@ -29,6 +29,7 @@ import android.view.ViewGroup; import androidx.recyclerview.widget.RecyclerView; +import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settingslib.Utils; @@ -41,6 +42,24 @@ import com.google.android.setupdesign.GlifPreferenceLayout; */ public class TextReadingPreferenceFragmentForSetupWizard extends TextReadingPreferenceFragment { + @Override + public void addPreferencesFromResource(int preferencesResId) { + super.addPreferencesFromResource(preferencesResId); + + adjustPreviewPaddingsForSetupWizard(); + } + + @VisibleForTesting + void adjustPreviewPaddingsForSetupWizard() { + TextReadingPreviewPreference textReadingPreviewPreference = findPreference(PREVIEW_KEY); + textReadingPreviewPreference.setLayoutMinHorizontalPadding( + getContext().getResources().getDimensionPixelSize( + R.dimen.text_reading_preview_layout_padding_horizontal_min_suw)); + textReadingPreviewPreference.setBackgroundMinHorizontalPadding( + getContext().getResources().getDimensionPixelSize( + R.dimen.text_reading_preview_background_padding_horizontal_min_suw)); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java index c4a948935ff..a9e2dce4241 100644 --- a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java +++ b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java @@ -19,11 +19,14 @@ package com.android.settings.accessibility; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import androidx.viewpager.widget.ViewPager; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.Preconditions; import com.android.settings.R; import com.android.settings.display.PreviewPagerAdapter; @@ -37,6 +40,9 @@ public class TextReadingPreviewPreference extends Preference { private int mLastLayerIndex; private PreviewPagerAdapter mPreviewAdapter; + private int mLayoutMinHorizontalPadding = 0; + private int mBackgroundMinHorizontalPadding = 0; + private final ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager.OnPageChangeListener() { @Override @@ -80,6 +86,10 @@ public class TextReadingPreviewPreference extends Preference { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); + FrameLayout previewLayout = (FrameLayout) holder.itemView; + LinearLayout backgroundView = previewLayout.findViewById(R.id.preview_background); + adjustPaddings(previewLayout, backgroundView); + final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager); viewPager.addOnPageChangeListener(mPageChangeListener); final DotsPageIndicator pageIndicator = @@ -88,6 +98,36 @@ public class TextReadingPreviewPreference extends Preference { updatePagerAndIndicator(viewPager, pageIndicator); } + /** + * Set the minimum preview layout horizontal inner padding. + */ + void setLayoutMinHorizontalPadding(int layoutMinHorizontalPadding) { + mLayoutMinHorizontalPadding = layoutMinHorizontalPadding; + } + + /** + * Set the minimum preview background view horizontal inner padding. + */ + void setBackgroundMinHorizontalPadding(int backgroundMinHorizontalPadding) { + mBackgroundMinHorizontalPadding = backgroundMinHorizontalPadding; + } + + @VisibleForTesting + void adjustPaddings(FrameLayout previewLayout, LinearLayout backgroundView) { + previewLayout.setPadding( + Math.max(previewLayout.getPaddingStart(), mLayoutMinHorizontalPadding), + previewLayout.getPaddingTop(), + Math.max(previewLayout.getPaddingEnd(), mLayoutMinHorizontalPadding), + previewLayout.getPaddingBottom() + ); + backgroundView.setPadding( + Math.max(backgroundView.getPaddingStart(), mBackgroundMinHorizontalPadding), + backgroundView.getPaddingTop(), + Math.max(backgroundView.getPaddingEnd(), mBackgroundMinHorizontalPadding), + backgroundView.getPaddingBottom() + ); + } + void setPreviewAdapter(PreviewPagerAdapter previewAdapter) { if (previewAdapter != mPreviewAdapter) { mPreviewAdapter = previewAdapter; @@ -142,6 +182,12 @@ public class TextReadingPreviewPreference extends Preference { } private void init() { + // set up the minimum horizontal paddings + setLayoutMinHorizontalPadding(getContext().getResources().getDimensionPixelSize( + R.dimen.text_reading_preview_layout_padding_horizontal_min)); + setBackgroundMinHorizontalPadding(getContext().getResources().getDimensionPixelSize( + R.dimen.text_reading_preview_background_padding_horizontal_min)); + setLayoutResource(R.layout.accessibility_text_reading_preview); } diff --git a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizardTest.java b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizardTest.java index 4ee2a2dedbd..41502b31ab3 100644 --- a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizardTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreferenceFragmentForSetupWizardTest.java @@ -16,11 +16,13 @@ package com.android.settings.accessibility; +import static com.android.settings.accessibility.TextReadingPreferenceFragment.PREVIEW_KEY; import static com.android.settings.accessibility.TextReadingPreferenceFragment.RESET_KEY; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @@ -65,6 +67,9 @@ public class TextReadingPreferenceFragmentForSetupWizardTest { @Mock private FragmentActivity mActivity; + @Mock + private TextReadingPreviewPreference mPreviewPreference; + @Spy private final Context mContext = ApplicationProvider.getApplicationContext(); private TextReadingPreferenceFragmentForSetupWizard mFragment; @@ -77,6 +82,7 @@ public class TextReadingPreferenceFragmentForSetupWizardTest { doReturn(mContext).when(mFragment).getContext(); doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner(); doReturn(resetPreference).when(mFragment).findPreference(RESET_KEY); + doReturn(mPreviewPreference).when(mFragment).findPreference(PREVIEW_KEY); doReturn(mFooterBarMixin).when(mGlifLayoutView).getMixin(FooterBarMixin.class); } @@ -109,4 +115,12 @@ public class TextReadingPreferenceFragmentForSetupWizardTest { verify(mFooterBarMixin).setPrimaryButton(any()); verify(mFooterBarMixin).setSecondaryButton(any()); } + + @Test + public void adjustPreviewPaddingsForSetupWizard_setPreviewLayoutPaddings() { + mFragment.adjustPreviewPaddingsForSetupWizard(); + + verify(mPreviewPreference).setLayoutMinHorizontalPadding(anyInt()); + verify(mPreviewPreference).setBackgroundMinHorizontalPadding(anyInt()); + } } diff --git a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java index 0162d26d8bc..4ca1dca3de5 100644 --- a/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/TextReadingPreviewPreferenceTest.java @@ -28,6 +28,7 @@ import android.content.Context; import android.content.res.Configuration; import android.view.LayoutInflater; import android.view.View; +import android.widget.FrameLayout; import android.widget.LinearLayout; import androidx.preference.PreferenceViewHolder; @@ -146,6 +147,44 @@ public class TextReadingPreviewPreferenceTest { assertThat(mTextReadingPreviewPreference.getCurrentItem()).isEqualTo(currentItem); } + @Test + public void adjustPaddings_setMinPaddingsLessThanXMLValue_paddingsNotIncreased() { + // get the default xml padding value + mTextReadingPreviewPreference.onBindViewHolder(mHolder); + final FrameLayout previewLayout = (FrameLayout) mHolder.itemView; + final LinearLayout backgroundView = previewLayout.findViewById(R.id.preview_background); + + final int currentLayoutPaddingStart = previewLayout.getPaddingStart(); + final int currentBackgroundPaddingStart = backgroundView.getPaddingStart(); + mTextReadingPreviewPreference.setLayoutMinHorizontalPadding( + currentLayoutPaddingStart - 10); + mTextReadingPreviewPreference.setBackgroundMinHorizontalPadding( + currentBackgroundPaddingStart - 10); + mTextReadingPreviewPreference.adjustPaddings(previewLayout, backgroundView); + + assertThat(previewLayout.getPaddingStart()).isEqualTo(currentLayoutPaddingStart); + assertThat(backgroundView.getPaddingStart()).isEqualTo(currentBackgroundPaddingStart); + } + + @Test + public void adjustPaddings_setMinPaddingsLargerThanXMLValue_paddingsIncreased() { + // get the default xml padding value + mTextReadingPreviewPreference.onBindViewHolder(mHolder); + final FrameLayout previewLayout = (FrameLayout) mHolder.itemView; + final LinearLayout backgroundView = previewLayout.findViewById(R.id.preview_background); + + final int currentLayoutPaddingStart = previewLayout.getPaddingStart(); + final int currentBackgroundPaddingStart = backgroundView.getPaddingStart(); + mTextReadingPreviewPreference.setLayoutMinHorizontalPadding( + currentLayoutPaddingStart + 10); + mTextReadingPreviewPreference.setBackgroundMinHorizontalPadding( + currentBackgroundPaddingStart + 10); + mTextReadingPreviewPreference.adjustPaddings(previewLayout, backgroundView); + + assertThat(previewLayout.getPaddingStart()).isEqualTo(currentLayoutPaddingStart + 10); + assertThat(backgroundView.getPaddingStart()).isEqualTo(currentBackgroundPaddingStart + 10); + } + private static Configuration[] createConfigurations(int count) { final Configuration[] configurations = new Configuration[count]; for (int i = 0; i < count; i++) {