diff --git a/res/layout/preview_seek_bar_view_pager.xml b/res/layout/preview_seek_bar_view_pager.xml
index d16a356..72aee10 100644
--- a/res/layout/preview_seek_bar_view_pager.xml
+++ b/res/layout/preview_seek_bar_view_pager.xml
@@ -24,8 +24,7 @@
         android:id="@+id/preview_pager"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="?android:attr/colorBackgroundFloating"
-        android:importantForAccessibility="noHideDescendants"/>
+        android:background="?android:attr/colorBackgroundFloating" />
 
     <View
         android:layout_width="match_parent"
diff --git a/res/layout/screen_zoom_preview_1.xml b/res/layout/screen_zoom_preview_1.xml
index 62cd093..a8408aa 100644
--- a/res/layout/screen_zoom_preview_1.xml
+++ b/res/layout/screen_zoom_preview_1.xml
@@ -20,7 +20,8 @@
     android:layout_height="match_parent"
     android:background="@color/conversation_background"
     android:padding="@dimen/conversation_message_list_padding"
-    android:orientation="vertical" >
+    android:orientation="vertical"
+    android:importantForAccessibility="noHideDescendants">
 
     <com.android.settings.display.ConversationMessageView
         android:layout_width="match_parent"
diff --git a/res/layout/screen_zoom_preview_2.xml b/res/layout/screen_zoom_preview_2.xml
index d9b748d..b61f92a 100644
--- a/res/layout/screen_zoom_preview_2.xml
+++ b/res/layout/screen_zoom_preview_2.xml
@@ -16,4 +16,5 @@
 <com.android.settings.display.AppGridView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" />
+    android:layout_height="match_parent"
+    android:importantForAccessibility="noHideDescendants" />
diff --git a/res/layout/screen_zoom_preview_app_icon.xml b/res/layout/screen_zoom_preview_app_icon.xml
index b5ab4ac..7d7d983 100644
--- a/res/layout/screen_zoom_preview_app_icon.xml
+++ b/res/layout/screen_zoom_preview_app_icon.xml
@@ -16,7 +16,8 @@
 
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
-             android:layout_height="wrap_content">
+             android:layout_height="wrap_content"
+             android:importantForAccessibility="noHideDescendants">
 
     <LinearLayout
         android:layout_width="@dimen/screen_zoom_preview_app_icon_width"
diff --git a/res/layout/screen_zoom_preview_settings.xml b/res/layout/screen_zoom_preview_settings.xml
index cf9a8bd..2e68009 100644
--- a/res/layout/screen_zoom_preview_settings.xml
+++ b/res/layout/screen_zoom_preview_settings.xml
@@ -18,7 +18,8 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:scrollbars="none"
-    android:background="?android:attr/colorBackgroundFloating">
+    android:background="?android:attr/colorBackgroundFloating"
+    android:importantForAccessibility="noHideDescendants">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7e5a557..6393bb7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -147,6 +147,9 @@
     <!-- Used for diagnostic info screens, precise translation isn't needed. Formats the SD card in the phone, meaning it will be erased and reformatted -->
     <string name="sdcard_format" product="default">Erase SD card</string>
 
+    <!-- Content description for dot pager indicator for preview pager. [CHAR LIMIT=NONE] -->
+    <string name="preview_page_indicator_content_description">Preview screen <xliff:g id="current_page" example="3">%1$d</xliff:g> of <xliff:g id="num_pages" example="9">%2$d</xliff:g></string>
+
     <!-- Summary of font size setting screen. [CHAR LIMIT=NONE] -->
     <string name="font_size_summary">Make the text on screen smaller or larger.</string>
 
diff --git a/src/com/android/settings/PreviewPagerAdapter.java b/src/com/android/settings/PreviewPagerAdapter.java
index 72b0b2f..8032f92 100644
--- a/src/com/android/settings/PreviewPagerAdapter.java
+++ b/src/com/android/settings/PreviewPagerAdapter.java
@@ -50,6 +50,9 @@
         for (int i = 0; i < previewSampleResIds.length; ++i) {
             mPreviewFrames[i] = (TouchBlockingFrameLayout) LayoutInflater.from(context)
                     .inflate(R.layout.preview_frame_container, null);
+            mPreviewFrames[i].setContentDescription(
+                    context.getString(R.string.preview_page_indicator_content_description, i + 1,
+                            previewSampleResIds.length));
 
             for (Configuration configuration : configurations) {
                 // Create a new configuration for the specified value. It won't
diff --git a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
index ad32c2d..15baa38 100644
--- a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
@@ -20,10 +20,12 @@
 import android.content.res.Configuration;
 import android.os.Bundle;
 import android.support.v4.view.ViewPager;
+import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
 import android.widget.SeekBar;
 import android.widget.SeekBar.OnSeekBarChangeListener;
 import android.widget.TextView;
@@ -48,11 +50,12 @@
     /** Resource id of the layout for this preference fragment. */
     protected int mActivityLayoutResId;
 
-    /** Resource id of the layout that defines the contents instide preview screen. */
+    /** Resource id of the layout that defines the contents inside preview screen. */
     protected int[] mPreviewSampleResIds;
 
     private ViewPager mPreviewPager;
     private PreviewPagerAdapter mPreviewPagerAdapter;
+    private DotsPageIndicator mPageIndicator;
 
     private TextView mLabel;
     private View mLarger;
@@ -132,7 +135,7 @@
             seekBar.setEnabled(false);
         }
 
-        final Context context = getContext();
+        final Context context = getPrefContext();
         final Configuration origConfig = context.getResources().getConfiguration();
         Configuration[] configurations = new Configuration[mEntries.length];
         for (int i = 0; i < mEntries.length; ++i) {
@@ -143,14 +146,47 @@
                 configurations);
         mPreviewPager = (ViewPager) content.findViewById(R.id.preview_pager);
         mPreviewPager.setAdapter(mPreviewPagerAdapter);
+        mPreviewPager.addOnPageChangeListener(new OnPageChangeListener() {
+            @Override
+            public void onPageScrollStateChanged(int state) {
+                // Do nothing.
+            }
 
-        final DotsPageIndicator pageIndicator =
-                (DotsPageIndicator) content.findViewById(R.id.page_indicator);
+            @Override
+            public void onPageScrolled(int position, float positionOffset,
+                    int positionOffsetPixels) {
+                // Do nothing.
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                mPreviewPager.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
+            }
+        });
+
+        mPageIndicator = (DotsPageIndicator) content.findViewById(R.id.page_indicator);
         if (mPreviewSampleResIds.length > 1) {
-            pageIndicator.setViewPager(mPreviewPager);
-            pageIndicator.setVisibility(View.VISIBLE);
+            mPageIndicator.setViewPager(mPreviewPager);
+            mPageIndicator.setVisibility(View.VISIBLE);
+            mPageIndicator.setOnPageChangeListener(new OnPageChangeListener() {
+                @Override
+                public void onPageScrollStateChanged(int state) {
+                    // Do nothing.
+                }
+
+                @Override
+                public void onPageScrolled(int position, float positionOffset,
+                        int positionOffsetPixels) {
+                    // Do nothing.
+                }
+
+                @Override
+                public void onPageSelected(int position) {
+                    setPagerIndicatorContentDescription(position);
+                }
+            });
         } else {
-            pageIndicator.setVisibility(View.GONE);
+            mPageIndicator.setVisibility(View.GONE);
         }
 
         setPreviewLayer(mInitialIndex, false);
@@ -176,11 +212,19 @@
         mSmaller.setEnabled(index > 0);
         mLarger.setEnabled(index < mEntries.length - 1);
 
+        setPagerIndicatorContentDescription(mPreviewPager.getCurrentItem());
+
         mPreviewPagerAdapter.setPreviewLayer(index, mCurrentIndex, mPreviewPager.getCurrentItem(),
                 animate);
         mCurrentIndex = index;
     }
 
+    private void setPagerIndicatorContentDescription(int position) {
+        mPageIndicator.setContentDescription(
+                getPrefContext().getString(R.string.preview_page_indicator_content_description,
+                        position + 1, mPreviewSampleResIds.length));
+    }
+
     /**
      * Persists the selected value and sends a configuration change.
      */
