Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bcf01e7a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 6a462009 92d837b4
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -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;
    }
}