summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-04-10 19:35:52 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-04-10 19:35:52 +0000
commit611d01e31946cb07f9bb6c0d4354b9f700cc5d43 (patch)
tree7c47ade35ba48bdae8bf730bb963e28d4d50b2bc
parent149ef4b11600d683cd28ff483697885eaf3a82fa (diff)
parentd76b792fb4c0928da2f8820b964635fefa0138fb (diff)
downloadandroid_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.xml2
-rw-r--r--src/com/android/packageinstaller/role/ui/CheckableLinearLayout.java22
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);
+ }
+ }
+ }
+ }
}