Подтвердить что ты не робот

Layout Layers? Z-Axis?

Я видел множество приложений, которые используют слои в своих макетах. Когда я говорю о расслоении, я имею в виду слои по оси z относительно вида пользователя. Одним из таких приложений является приложение Craigslist Notification, в котором вместо ListView есть знак "плюс" внизу, чтобы пользователь мог получить доступ к добавлению дополнительного элемента списка.

В моем случае, я успешно использую GestureListener для перевода страниц. Хорошо работает, но я хотел бы наложить прозрачную правую и левую стрелку png на края страниц, если есть страницы назад или вперед того, на котором пользователь в данный момент включен.

Я искал, но не совсем уверен, как иметь 2 элемента макета, которые одновременно используют одно и то же пространство. В этом случае у вас есть содержание страницы (макет) и потребность в чем-то сверху (по оси z) этого макета.

Может ли кто-нибудь указать мне в правильном направлении?

4b9b3361

Ответ 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 с полупрозрачным фоном.