2015-12-28 2 views
0

Я хочу создать пользовательский диагональный макет, как и андроиды с предопределенной линейной компоновкой..так, я начал с класса, расширяющего ViewGroup и переопределив методы OnLayout и OnMeasure..Однако мне трудно понять где писать логику alligning все Просмотров таким образом, что они будут размещены по диагоналиСоздать пользовательскую группу вида (Диагональный макет)

Я прочитал несколько блог на нем How to Create Custom Layout in Android by Extending ViewGroup Class

Также следует/вывод видео Google I Но до сих пор не ясно, о том, как начать с созданием диагональной компоновки .. кто-то предложит любые дополнительные ресурсы в этом отношении .. ???

ответ

1

Логика измерения детей должна быть в onMeasure. Здесь вы хотите, чтобы сумма всех высот детей была такой же большой, как высота, указанная в heightMeasureSpec. То же самое касается ширины. Для этого вы можете разделить ширину и высоту от measureSpec на количество детей и вызвать метод child measure с этими вычисленными значениями.

Логика расположения детей находится в onLayout. Здесь вы вызываете дочерние объекты layout один за другим, передавая им позиции (слева, сверху, ...), увеличивающиеся после макетирования каждого дочернего элемента.

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

Lucas Rocha имеет очень хорошее article (с большим количеством обратного проектирования) для пользовательских видов.

Смежные вопросы