При принятии решения о том, какой вид рисовать сверху, Android учитывает две вещи:
Примечание! Старые устройства (ниже 21) не используют Z-порядок, только просмотр порядка. Новые устройства (21 и выше) сначала используют Z-порядок и (для представлений с одинаковыми Z-координатами) порядок просмотра.
Ваш макет может выглядеть следующим образом:
Почему Button оборачивается дополнительным FrameLayout?
Поскольку виджеты могут иметь Z-координаты по умолчанию. Для кнопки Z равно 2 в нормальном состоянии и 8 в нажатом состоянии (см. https://material.io/design/environment/elevation.html ). Таким образом, во всех случаях кнопка будет нарисована сверху.
Но это можно обойти, обернув кнопку в другом макете.
При выборе того, что рисовать дальше, макет ищет только своих прямых потомков, а не всю иерархию. В этом случае все дочерние элементы имеют Z, равный 0, поэтому сначала рисует behindListViewWrapper
, затем просмотр списка, затем просмотр поиска.
Если кнопка не была перенесена, она будет нарисована сверху (на современных устройствах из-за Z) или сзади (на старых устройствах из-за упорядочения вида).
[см. комментарии выше]
к сожалению, нет. даже с gdirections, нет никакого способа определить местоположение начала и конца улицы (координаты). Я решил его при помощи взлома, предложенного выше: цикличное выполнение по созданию чисел от 1 до XXX.
если точность равняется 6 некоторое время (8 = создание числа, 7=intersection, 6 = только приблизительный адрес), который означает, что никакие новые числа не существуют. таким образом, я просто беру первую точку (lat/long), среднюю и последнюю (все с точностью 8) и создаю путь между ними. это однако иногда только обеспечивает только часть улицы, как другие части или без любых зданий или без Google, не имеет дальнейших данных :(
Вы могли бы рассмотреть использование данных ТИГРА из USGS. Можно получить ту информацию оттуда, но не столь легко играть с как данные Google.