Как я могу достичь этого базового макета в Android с правильным z-упорядочением представлений

Как я могу добиться следующего макета в Android?

Я хотел бы, чтобы 3 синих прямоугольника были выровнены сверху в их представлении, а затем я хотел бы, чтобы красный прямоугольник был в центре под синими прямоугольниками, но так, чтобы, когда я анимирую красный прямоугольник вверх, он скользил под синяя коробка.

Я пробовал размещать синие и красные блоки в разных макетах, но как только я анимирую красный блок, если он выходит за границы своего макета, он исчезает (я не хочу, чтобы макет красного блока обрезал красный поле, я хочу, чтобы красное поле скользнуло под синее поле так, чтобы синее поле закрывало красное поле.)

Мне также удалось создать этот макет, используя серию вложенных макетов, но из-за порядка отрисовки красный прямоугольник всегда появляется поверх синего прямоугольника. Я попытался использовать метод BringToFront(), но обнаружил, что он работает только с одноуровневыми представлениями в пределах одного макета. К сожалению, я не могу получить этот тип макета, сохраняя все 4 представления в одном и том же макете. Какие-либо предложения? (также, если у кого-то есть лучшие предложения по названию этого вопроса, я все уши)

альтернативный текст


person justinl    schedule 14.09.2010    source источник


Ответы (1)


попробуйте использовать RelativeLayout. Если вы знаете высоту синего прямоугольника, вы всегда можете сначала нарисовать красный прямоугольник, а затем добавить синий прямоугольник в свой макет, чтобы убедиться, что синий прямоугольник всегда находится поверх красного.

Вы также можете рассмотреть возможность использования SurfaceView, где вы можете легко заказывать товары и без какого-либо определения xml...

person WarrenFaith    schedule 14.09.2010
comment
Эй, это сработало лучше, чем я думал. Раньше я пробовал RelativeLayout безуспешно, но, попробовав снова, я смог понять это. Хотя я не верю, что есть какой-либо способ центрировать красное поле под синим полем (если представления не одинаковой ширины), я установил красное поле под синим полем, а затем справа от самого левого синего поля. box и просто убедился, что красный и синий виды имеют одинаковую ширину. Чтобы исправить проблему с порядком z, когда я запускаю анимацию движения красного прямоугольника вверх, я просто отправляю синий прямоугольник на передний план с помощью функции BringToFront(). Вуаля! Спасибо, УорренФейт. - person justinl; 14.09.2010