diff options
author | Bob Yang <zonghuayang@google.com> | 2022-05-11 11:58:49 +0800 |
---|---|---|
committer | Bob Yang <zonghuayang@google.com> | 2022-05-13 11:15:57 +0800 |
commit | 646aeb78ac90477260dbdd97b292d85f61c7b1d0 (patch) | |
tree | 20303c2d35f71a652ff1ff1eef47953af1a55fb8 | |
parent | 25d017c02322860d4c7a54d033421f8d77d8fef8 (diff) | |
download | ThemePicker-646aeb78ac90477260dbdd97b292d85f61c7b1d0.tar.gz |
Set a unique id for color sections to prevent focus issues on talkback mode
- Set a unique id for color sections and its ancestor.
Bug: 227707089
Test: Manual
Change-Id: If64b9b9c33046d59d7d72e0b7d696d106b574cf9
-rw-r--r-- | src/com/android/customization/model/color/ColorSectionController.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/customization/model/color/ColorSectionController.java b/src/com/android/customization/model/color/ColorSectionController.java index ac346dd9..b39b990d 100644 --- a/src/com/android/customization/model/color/ColorSectionController.java +++ b/src/com/android/customization/model/color/ColorSectionController.java @@ -35,6 +35,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import androidx.annotation.Nullable; @@ -63,6 +64,7 @@ import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.UUID; /** * Color section view's controller for the logic of color customization. @@ -127,6 +129,7 @@ public class ColorSectionController implements CustomizationSectionController<Co mColorSectionView = (ColorSectionView) LayoutInflater.from(context).inflate( R.layout.color_section_view, /* root= */ null); mColorSectionViewPager = mColorSectionView.findViewById(R.id.color_section_view_pager); + mColorSectionViewPager.setAccessibilityDelegate(mAccessibilityDelegate); mColorSectionViewPager.setAdapter(mColorSectionAdapter); mColorSectionViewPager.setUserInputEnabled(false); if (ColorProvider.themeStyleEnabled) { @@ -378,6 +381,14 @@ public class ColorSectionController implements CustomizationSectionController<Co return action; } + private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() { + @Override + public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.setUniqueId(UUID.randomUUID().toString()); + } + }; + private class ColorSectionAdapter extends RecyclerView.Adapter<ColorSectionAdapter.ColorPageViewHolder> { @@ -443,6 +454,8 @@ public class ColorSectionController implements CustomizationSectionController<Co if (ColorProvider.themeStyleEnabled) { mPageIndicator.setVisibility(VISIBLE); } + itemView.setAccessibilityDelegate(mAccessibilityDelegate); + mContainer.setAccessibilityDelegate(mAccessibilityDelegate); } } } |