Merge "Manuall set accessibility order of zen radio grouping" into oc-mr1-dev am: bcf01e7a2a

am: 056975f469

Change-Id: Iada291156b91fb8cfd64473bff2010fb8c0f31a0
This commit is contained in:
Jason Monk
2017-08-15 18:59:07 +00:00
committed by android-build-merger

View File

@@ -46,9 +46,16 @@ public class ZenRadioLayout extends LinearLayout {
throw new IllegalStateException("Expected matching children");
}
boolean hasChanges = false;
View lastView = null;
for (int i = 0; i < size; i++) {
View radio = radioGroup.getChildAt(i);
View content = radioContent.getChildAt(i);
if (lastView != null) {
radio.setAccessibilityTraversalAfter(lastView.getId());
}
View contentClick = findFirstClickable(content);
if (contentClick != null) contentClick.setAccessibilityTraversalAfter(radio.getId());
lastView = findLastClickable(content);
if (radio.getLayoutParams().height != content.getMeasuredHeight()) {
hasChanges = true;
radio.getLayoutParams().height = content.getMeasuredHeight();
@@ -59,4 +66,28 @@ public class ZenRadioLayout extends LinearLayout {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
private View findFirstClickable(View content) {
if (content.isClickable()) return content;
if (content instanceof ViewGroup) {
ViewGroup group = (ViewGroup) content;
for (int i = 0; i < group.getChildCount(); i++) {
View v = findFirstClickable(group.getChildAt(i));
if (v != null) return v;
}
}
return null;
}
private View findLastClickable(View content) {
if (content.isClickable()) return content;
if (content instanceof ViewGroup) {
ViewGroup group = (ViewGroup) content;
for (int i = group.getChildCount() - 1; i >= 0; i--) {
View v = findLastClickable(group.getChildAt(i));
if (v != null) return v;
}
}
return null;
}
}