diff --git a/res/drawable/keyboard_arrow_left.xml b/res/drawable/keyboard_arrow_left.xml
new file mode 100644
index 00000000000..77a2bfb6046
--- /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..5b0dd3d27dd
--- /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..9c3ce31db22 100644
--- a/res/layout/accessibility_text_reading_preview.xml
+++ b/res/layout/accessibility_text_reading_preview.xml
@@ -38,20 +38,45 @@
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 c49d6e3f767..828e5c3e5aa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -78,6 +78,11 @@
Preview
+
+ Previous preview
+
+ Next preview
+
QR code
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewPreference.java b/src/com/android/settings/accessibility/TextReadingPreviewPreference.java
index 9161171914a..717da70e49c 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,23 @@ 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);
+
+ previousButton.setOnClickListener((view) -> setCurrentItem(getCurrentItem() - 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_previous_button));
+ nextButton.setOnClickListener((view) -> setCurrentItem(getCurrentItem() + 1));
+ previousButton.setContentDescription(getContext().getString(
+ R.string.preview_pager_next_button));
}
@Override
@@ -158,7 +176,9 @@ public class TextReadingPreviewPreference extends Preference {
Preconditions.checkNotNull(mPreviewAdapter,
"Preview adapter is null, you should init the preview adapter first");
- if (currentItem != mCurrentItem) {
+ if (currentItem < 0 || currentItem >= mPreviewAdapter.getCount()) {
+ return;
+ } else if (currentItem != mCurrentItem) {
mCurrentItem = currentItem;
notifyChanged();
}