Merge "fix(text preference): fix preview block ui broken in SUW" into main
This commit is contained in:
@@ -19,17 +19,17 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingVertical="@dimen/settingslib_illustration_padding"
|
android:paddingVertical="@dimen/settingslib_illustration_padding"
|
||||||
android:paddingEnd="@dimen/text_reading_preview_padding_end"
|
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||||
android:paddingStart="@dimen/text_reading_preview_padding_start">
|
android:paddingStart="?android:attr/listPreferredItemPaddingStart">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/preview_background"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/accessibility_text_reading_preview"
|
android:background="@drawable/accessibility_text_reading_preview"
|
||||||
android:clipChildren="true"
|
android:clipChildren="true"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingVertical="@dimen/text_reading_preview_background_padding_vertical"
|
android:padding="18dp">
|
||||||
android:paddingHorizontal="@dimen/text_reading_preview_background_padding_horizontal">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/preview_label"
|
android:id="@+id/preview_label"
|
||||||
|
@@ -22,7 +22,9 @@
|
|||||||
<dimen name="notif_channel_panel_max_height">300dp</dimen>
|
<dimen name="notif_channel_panel_max_height">300dp</dimen>
|
||||||
|
|
||||||
<!-- Text Reading Settings -->
|
<!-- Text Reading Settings -->
|
||||||
<dimen name="text_reading_preview_padding_start">64dp</dimen>
|
<dimen name="text_reading_preview_layout_padding_horizontal_min">64dp</dimen>
|
||||||
<dimen name="text_reading_preview_padding_end">64dp</dimen>
|
<dimen name="text_reading_preview_background_padding_horizontal_min">72dp</dimen>
|
||||||
<dimen name="text_reading_preview_background_padding_horizontal">72dp</dimen>
|
|
||||||
|
<dimen name="text_reading_preview_layout_padding_horizontal_min_suw">24dp</dimen>
|
||||||
|
<dimen name="text_reading_preview_background_padding_horizontal_min_suw">24dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -223,10 +223,14 @@
|
|||||||
<dimen name="message_icon_inset">11dp</dimen>
|
<dimen name="message_icon_inset">11dp</dimen>
|
||||||
|
|
||||||
<!-- Text Reading Settings -->
|
<!-- Text Reading Settings -->
|
||||||
<dimen name="text_reading_preview_padding_start">@*android:dimen/list_item_padding_end_material</dimen>
|
<dimen name="text_reading_preview_layout_padding_horizontal_min">
|
||||||
<dimen name="text_reading_preview_padding_end">@*android:dimen/list_item_padding_end_material</dimen>
|
@*android:dimen/list_item_padding_start_material</dimen>
|
||||||
<dimen name="text_reading_preview_background_padding_vertical">18dp</dimen>
|
<dimen name="text_reading_preview_background_padding_horizontal_min">18dp</dimen>
|
||||||
<dimen name="text_reading_preview_background_padding_horizontal">18dp</dimen>
|
|
||||||
|
<dimen name="text_reading_preview_layout_padding_horizontal_min_suw">
|
||||||
|
@dimen/text_reading_preview_layout_padding_horizontal_min</dimen>
|
||||||
|
<dimen name="text_reading_preview_background_padding_horizontal_min_suw">
|
||||||
|
@dimen/text_reading_preview_background_padding_horizontal_min</dimen>
|
||||||
|
|
||||||
<!-- Accessibility Settings -->
|
<!-- Accessibility Settings -->
|
||||||
<dimen name="accessibility_layout_margin_start_end">16dp</dimen>
|
<dimen name="accessibility_layout_margin_start_end">16dp</dimen>
|
||||||
|
@@ -62,7 +62,7 @@ public class TextReadingPreferenceFragment extends DashboardFragment {
|
|||||||
static final String BOLD_TEXT_KEY = "toggle_force_bold_text";
|
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 HIGH_TEXT_CONTRAST_KEY = "toggle_high_text_contrast_preference";
|
||||||
static final String RESET_KEY = "reset";
|
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 NEED_RESET_SETTINGS = "need_reset_settings";
|
||||||
private static final String LAST_PREVIEW_INDEX = "last_preview_index";
|
private static final String LAST_PREVIEW_INDEX = "last_preview_index";
|
||||||
private static final int UNKNOWN_INDEX = -1;
|
private static final int UNKNOWN_INDEX = -1;
|
||||||
|
@@ -29,6 +29,7 @@ import android.view.ViewGroup;
|
|||||||
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
|
|
||||||
@@ -41,6 +42,24 @@ import com.google.android.setupdesign.GlifPreferenceLayout;
|
|||||||
*/
|
*/
|
||||||
public class TextReadingPreferenceFragmentForSetupWizard extends TextReadingPreferenceFragment {
|
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
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
@@ -19,11 +19,14 @@ package com.android.settings.accessibility;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.display.PreviewPagerAdapter;
|
import com.android.settings.display.PreviewPagerAdapter;
|
||||||
@@ -37,6 +40,9 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
private int mLastLayerIndex;
|
private int mLastLayerIndex;
|
||||||
private PreviewPagerAdapter mPreviewAdapter;
|
private PreviewPagerAdapter mPreviewAdapter;
|
||||||
|
|
||||||
|
private int mLayoutMinHorizontalPadding = 0;
|
||||||
|
private int mBackgroundMinHorizontalPadding = 0;
|
||||||
|
|
||||||
private final ViewPager.OnPageChangeListener mPageChangeListener =
|
private final ViewPager.OnPageChangeListener mPageChangeListener =
|
||||||
new ViewPager.OnPageChangeListener() {
|
new ViewPager.OnPageChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -80,6 +86,10 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||||
super.onBindViewHolder(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);
|
final ViewPager viewPager = (ViewPager) holder.findViewById(R.id.preview_pager);
|
||||||
viewPager.addOnPageChangeListener(mPageChangeListener);
|
viewPager.addOnPageChangeListener(mPageChangeListener);
|
||||||
final DotsPageIndicator pageIndicator =
|
final DotsPageIndicator pageIndicator =
|
||||||
@@ -88,6 +98,36 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
updatePagerAndIndicator(viewPager, pageIndicator);
|
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) {
|
void setPreviewAdapter(PreviewPagerAdapter previewAdapter) {
|
||||||
if (previewAdapter != mPreviewAdapter) {
|
if (previewAdapter != mPreviewAdapter) {
|
||||||
mPreviewAdapter = previewAdapter;
|
mPreviewAdapter = previewAdapter;
|
||||||
@@ -142,6 +182,12 @@ public class TextReadingPreviewPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
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);
|
setLayoutResource(R.layout.accessibility_text_reading_preview);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,11 +16,13 @@
|
|||||||
|
|
||||||
package com.android.settings.accessibility;
|
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.android.settings.accessibility.TextReadingPreferenceFragment.RESET_KEY;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -65,6 +67,9 @@ public class TextReadingPreferenceFragmentForSetupWizardTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private FragmentActivity mActivity;
|
private FragmentActivity mActivity;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private TextReadingPreviewPreference mPreviewPreference;
|
||||||
|
|
||||||
@Spy
|
@Spy
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private TextReadingPreferenceFragmentForSetupWizard mFragment;
|
private TextReadingPreferenceFragmentForSetupWizard mFragment;
|
||||||
@@ -77,6 +82,7 @@ public class TextReadingPreferenceFragmentForSetupWizardTest {
|
|||||||
doReturn(mContext).when(mFragment).getContext();
|
doReturn(mContext).when(mFragment).getContext();
|
||||||
doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
|
doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
|
||||||
doReturn(resetPreference).when(mFragment).findPreference(RESET_KEY);
|
doReturn(resetPreference).when(mFragment).findPreference(RESET_KEY);
|
||||||
|
doReturn(mPreviewPreference).when(mFragment).findPreference(PREVIEW_KEY);
|
||||||
doReturn(mFooterBarMixin).when(mGlifLayoutView).getMixin(FooterBarMixin.class);
|
doReturn(mFooterBarMixin).when(mGlifLayoutView).getMixin(FooterBarMixin.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,4 +115,12 @@ public class TextReadingPreferenceFragmentForSetupWizardTest {
|
|||||||
verify(mFooterBarMixin).setPrimaryButton(any());
|
verify(mFooterBarMixin).setPrimaryButton(any());
|
||||||
verify(mFooterBarMixin).setSecondaryButton(any());
|
verify(mFooterBarMixin).setSecondaryButton(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void adjustPreviewPaddingsForSetupWizard_setPreviewLayoutPaddings() {
|
||||||
|
mFragment.adjustPreviewPaddingsForSetupWizard();
|
||||||
|
|
||||||
|
verify(mPreviewPreference).setLayoutMinHorizontalPadding(anyInt());
|
||||||
|
verify(mPreviewPreference).setBackgroundMinHorizontalPadding(anyInt());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ import android.content.Context;
|
|||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
@@ -146,6 +147,44 @@ public class TextReadingPreviewPreferenceTest {
|
|||||||
assertThat(mTextReadingPreviewPreference.getCurrentItem()).isEqualTo(currentItem);
|
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) {
|
private static Configuration[] createConfigurations(int count) {
|
||||||
final Configuration[] configurations = new Configuration[count];
|
final Configuration[] configurations = new Configuration[count];
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
|
Reference in New Issue
Block a user