Layout Layers? Z-Axis?
Я видел множество приложений, которые используют слои в своих макетах. Когда я говорю о расслоении, я имею в виду слои по оси z относительно вида пользователя. Одним из таких приложений является приложение Craigslist Notification, в котором вместо ListView есть знак "плюс" внизу, чтобы пользователь мог получить доступ к добавлению дополнительного элемента списка.
В моем случае, я успешно использую GestureListener для перевода страниц. Хорошо работает, но я хотел бы наложить прозрачную правую и левую стрелку png на края страниц, если есть страницы назад или вперед того, на котором пользователь в данный момент включен.
Я искал, но не совсем уверен, как иметь 2 элемента макета, которые одновременно используют одно и то же пространство. В этом случае у вас есть содержание страницы (макет) и потребность в чем-то сверху (по оси z) этого макета.
Может ли кто-нибудь указать мне в правильном направлении?
Ответы
Ответ 1
Попробуйте использовать FrameLayout.
FrameLayout всегда помещает вещи друг на друга и всегда ссылается на верхний левый угол, поэтому вам нужно будет использовать отдельные макеты внутри FrameLayout, чтобы поместить ваши объекты туда, где вы хотите на экране.
Помните, что андроид поместит вещи в ваш макет в том порядке, в котором они перечислены, поэтому разместите объекты в нижней части макета, которые вы хотите, рядом с верхней частью экрана.
Вот быстрый пример (не забудьте добавить правильные данные заголовка xml в начало node):
<FrameLayout>
<RelativeLayout>
<!-- Place the objects you want on the bottom here -->
</RelativeLayout>
<RelativeLayout>
<!-- Place the objects you want on the top here -->
</RelativeLayout>
</FrameLayout>
Ответ 2
Небольшое дополнение к предыдущему ответу:
для предотвращения событий onClick на нижнем "слое" атрибут set clickable = "true" на верхний "слой"
<RelativeLayout
....
android:clickable="true"/>
В противном случае кнопки с чем-то с событиями "click" могут быть нажаты через верхний слой.
Я нашел эту проблему, когда попытался охватить интерфейс с помощью слоя RelativeLayout с полупрозрачным фоном.