diff --git a/res/drawable/keyboard_arrow_left.xml b/res/drawable/keyboard_arrow_left.xml
new file mode 100644
index 00000000000..c2ffc1d21cf
--- /dev/null
+++ b/res/drawable/keyboard_arrow_left.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/keyboard_arrow_right.xml b/res/drawable/keyboard_arrow_right.xml
new file mode 100644
index 00000000000..ba763690521
--- /dev/null
+++ b/res/drawable/keyboard_arrow_right.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/accessibility_text_reading_preview.xml b/res/layout/accessibility_text_reading_preview.xml
index 830d9e66778..2532a7957eb 100644
--- a/res/layout/accessibility_text_reading_preview.xml
+++ b/res/layout/accessibility_text_reading_preview.xml
@@ -38,20 +38,47 @@
android:text="@string/screen_zoom_preview_title"
style="@style/AccessibilityTextReadingPreviewTitle" />
-
-
-
+ android:orientation="vertical">
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7bbd3c7744c..ec94d6411e0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -80,6 +80,10 @@
Preview
QR code
+
+ Previous preview
+
+ Next preview
Make smaller
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
index 9161171914a..99e71258b6f 100644
--- a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
+++ b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
@@ -22,6 +22,7 @@ import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
import android.widget.LinearLayout;
import androidx.preference.Preference;
@@ -99,6 +100,28 @@ public class TextReadingPreviewPreference extends Preference {
(DotsPageIndicator) holder.findViewById(R.id.page_indicator);
updateAdapterIfNeeded(viewPager, pageIndicator, mPreviewAdapter);
updatePagerAndIndicator(viewPager, pageIndicator);
+ viewPager.setClipToOutline(true);
+
+ int layoutDirection =
+ getContext().getResources().getConfiguration().getLayoutDirection();
+ int previousId = (layoutDirection == View.LAYOUT_DIRECTION_RTL)
+ ? R.id.preview_right_button : R.id.preview_left_button;
+ int nextId = (layoutDirection == View.LAYOUT_DIRECTION_RTL)
+ ? R.id.preview_left_button : R.id.preview_right_button;
+ final ImageButton previousButton = previewLayout.findViewById(previousId);
+ final ImageButton nextButton = previewLayout.findViewById(nextId);
+
+ // These call ViewPager#setCurrentItem directly
+ // because that doesn't force a refresh through notifyChanged().
+ // We found this avoids a crash in SUW (See b/386906497).
+ previousButton.setOnClickListener((view) ->
+ viewPager.setCurrentItem(getCurrentItem() - 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_previous_button));
+ nextButton.setOnClickListener((view) ->
+ viewPager.setCurrentItem(getCurrentItem() + 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_next_button));
}
@Override