diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-04-10 19:35:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-04-10 19:35:52 +0000 |
commit | 611d01e31946cb07f9bb6c0d4354b9f700cc5d43 (patch) | |
tree | 7c47ade35ba48bdae8bf730bb963e28d4d50b2bc | |
parent | 149ef4b11600d683cd28ff483697885eaf3a82fa (diff) | |
parent | d76b792fb4c0928da2f8820b964635fefa0138fb (diff) | |
download | android_packages_apps_PackageInstaller-611d01e31946cb07f9bb6c0d4354b9f700cc5d43.tar.gz android_packages_apps_PackageInstaller-611d01e31946cb07f9bb6c0d4354b9f700cc5d43.tar.bz2 android_packages_apps_PackageInstaller-611d01e31946cb07f9bb6c0d4354b9f700cc5d43.zip |
Merge "Improve a11y of role UI." into qt-dev
-rw-r--r-- | res/values/styles.xml | 2 | ||||
-rw-r--r-- | src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/res/values/styles.xml b/res/values/styles.xml index 48504122..852d3e33 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -703,7 +703,7 @@ <style name="RequestRoleViewCheckbox"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> - <item name="android:minHeight">40dp</item> + <item name="android:minHeight">?android:listPreferredItemHeightSmall</item> <item name="android:paddingStart">16dp</item> <item name="android:textAppearance">@style/android:TextAppearance.Material.Subhead</item> </style> diff --git a/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java b/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java index 19e770d0..507bef78 100644 --- a/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java +++ b/src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java @@ -18,6 +18,8 @@ package com.android.packageinstaller.role.ui; import android.content.Context; import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; import android.widget.Checkable; import android.widget.LinearLayout; @@ -71,6 +73,7 @@ public class CheckableLinearLayout extends LinearLayout implements Checkable { mChecked = checked; refreshDrawableState(); + updateChildrenChecked(); } @Override @@ -87,4 +90,23 @@ public class CheckableLinearLayout extends LinearLayout implements Checkable { } return state; } + + private void updateChildrenChecked() { + updateChildrenChecked(this, mChecked); + } + + // We call setChecked() on checkable children so that accessibility can get the correct state. + private static void updateChildrenChecked(@NonNull ViewGroup viewGroup, boolean checked) { + int count = viewGroup.getChildCount(); + for (int i = 0; i < count; i++) { + View child = viewGroup.getChildAt(i); + if (child.isDuplicateParentStateEnabled()) { + if (child instanceof Checkable) { + ((Checkable) child).setChecked(checked); + } else if (child instanceof ViewGroup) { + updateChildrenChecked((ViewGroup) child, checked); + } + } + } + } } |