У меня есть приложение с minSdk, равным 15, и я исправляю все ошибки, возникшие при обновлении леденца. Наше программное обеспечение очень сложное, и оно динамически создает представления, используя настраиваемые ViewGroups, а затем массив элементов, размеры которых явно заданы и которые помещаются внутрь группы. Я столкнулся с проблемой, когда, например, у меня будет ViewGroup, а первый дочерний объект - это кнопка... эта кнопка имеет размер, чтобы заполнить представление (не кликабельно). Второй дочерний элемент — это FrameLayout, содержащий одно представление. Это единственное представление является видеообъектом. Во всех предыдущих версиях Android это работало нормально. FrameLayout накладывается на кнопку (которая действует как фон), а видео находится внутри рамки. Вы можете взаимодействовать с видео без каких-либо проблем.
Что-то изменилось в леденце на палочке - внезапно, хотя кнопка отображается как элемент индекса 0, она лежит НАД остальными дочерними элементами... поэтому я не могу добраться до видео внизу. Если я удалю этот элемент кнопки, видео будет отображаться и воспроизводиться просто отлично... У меня нет проблем с взаимодействием с ним.
Я запустил приложение в UI Automator Viewer, чтобы убедиться, что я действительно настраиваю пользовательский интерфейс так, как ожидал (имейте в виду, что все представление динамически визуализируется во время выполнения с использованием ресурсов изображений/видео и файлов конфигурации xml).
Я не могу поделиться кодом, так как это проприетарное программное обеспечение, но я работаю над небольшим тестовым проектом, чтобы посмотреть, смогу ли я вручную воссоздать проблему со статическими объектами. Как только я его запущу, я обязательно обновлю этот тикет. А пока вот скриншот иерархии:
https://goo.gl/photos/a8on9CJDnN66XYnV6
Обратите внимание на выделенный объект, это пользовательская ViewGroup, дочерние элементы под ней — это то, что я описал выше.
Кто-нибудь знает об изменении в Lollipop, которое повлияет на порядок вещей? Ранее я обнаружил, что если у вас есть отключенный объект, но нет назначенного этому объекту отрисовки отключенного состояния, он станет невидимым, предыдущие версии просто использовали один из других отрисовок состояния.. хорошо, это имеет смысл, и это было очень легко исправить, но этот объект не является невидимым... значит, это должно быть что-то другое.
Любое направление будет с благодарностью. ~ А
ОБНОВЛЕНИЕ – ИСПРАВЛЕНО
С помощью @alanv и @BladeCoder я понял, что эта функциональность связана с новой функцией повышения высоты в дизайне материалов. Я смог исправить свою конкретную проблему, сначала проверив, какую версию Android использует устройство, и если леденец, я просто добавляю это новое свойство к кнопке:
android:stateListAnimator="@null"
Это предотвращает переопределение моей явной дочерней иерархии операционной системой.
android:stateListAnimator="@null"
. Однако, если вы не хотите, чтобы кнопка отображалась, вам следует изменить ее видимость на исчезнувшую или невидимую. - person alanv   schedule 04.06.2015