* Sometimes would cause an unending stream of accessibility events (particularly if starting off-screen). This would break TalkBack and anything that depends on UiAutomator (although the system itself took it like a champ).
* Sometimes would not load images (because the ViewTreeObserver would never fire onGlobalLayout after being added because measured width was 0, even though a new width was calculated later).
* Would not recalculate the number of icons that fit if the width changes after the first layout.
Combining ViewHolders with waiting for measuring and/or ViewTreeObservers was always a wonky approach, even though it should've worked in theory. This should be more robust.
Also fixes the unwanted animation on mode screen load related to the absence of the header name being applied a tad too late.
Fixes: 359948417
Fixes: 360072876
Fixes: 360328804
Test: atest SettingsRoboTests + manual + adb shell uiautomator events
Flag: android.app.modes_ui
Change-Id: I7e5dfbdab220d1ebc1c68e5e87ce544ee86b6a65
The description of the segment is already "App 1, App 2, and x more can interrupt", from its text. If the icons don't fit, there's a "+N" at the end. Accessibility services reading this is confusing, especially because the icons that don't fit are not the same as the names that don't fit, so you could get something like "App 1, App 2, and 9 more can interrupt, plus 4".
The whole circular-icons section is irrelevant for a11y so we just mark the container as "noHideDescendants" to save Talkback some work.
Fixes: 359837977
Test: Manual with Talkback
Flag: android.app.modes_ui
Change-Id: I346abcc94e25ef60c5e91f77b8e13f38ade39c71
(Several things pending, such as the +n icon and the correct pending icons, but it's a start).
Test: atest com.android.settings.notification.modes
Bug: 346551087
Flag: android.app.modes_ui
Change-Id: Ifd2ab6a8bb447739dc8ffe400c3960779d477fd6