Комментарии 16
А так же для подобных целей можно использовать GridLayout, доступный из support library v7.
Но, конечно, в качестве урока по созданию кастомного лэйаута, ваша статья хороша. Спасибо.
Но, конечно, в качестве урока по созданию кастомного лэйаута, ваша статья хороша. Спасибо.
Хорошо рассмотрено создание кастомного контейнера. Для полноты в контрол хорошо бы добавить атрибут управляющий ошибкой округления. Т.е. чтоб была возможность заполнить все выделенное пространство без пропусков (например при ширине в 11 и количестве элементов 3).
Спасибо. Ну, тут можно много свистелок прикрутить, если задаться такой целью. Например, хорошо бы добавить проверку, не выходят ли добавляемые компоненты за границу отведенного количества колонок и все такое. А, с другой стороны, могут быть юз кейсы, когда нужно, чтобы оно немного выплывало :) Все сильно зависит, под какие конкретные цели вы пишите компонент.
Спасибо за толькове описание!
Я думаю, cellsWidth и cellsHeight лучше заменить на что-нибудь с Columns и Rows потому что упоминание ширины и высоты ячеек сбивает с толку.
Я думаю, cellsWidth и cellsHeight лучше заменить на что-нибудь с Columns и Rows потому что упоминание ширины и высоты ячеек сбивает с толку.
Пожалуйста, почитайте code style guidelines.
Круто, как всегда. Спасибо :) Инетересно было бы посмотреть на вашу реализацию AdapterView как в Pinterest и ему подобных. Ну или вообще какие-то танцы вокруг AdapterView. Мне кажется, что это довольно нетривиально и будет интересно.
Спасибо. Если честно, к AdapterView у меня страх :) Особенно не представляю, как сделать аналогичное позиционирование элементов разного размера. Ведь это по-сути задача rectangular bin packing… Но как-нибудь, как появится свободное время, обязательно поиграюсь.
Едиственное, не понял вот этого момента:
Почему вторым параметром идет
MeasureSpec.makeMeasureSpec(..., LayoutParams.MATCH_PARENT);
Почему вторым параметром идет
LayoutParams.MATCH_PARENT
, там же должен лежать mode?И вот этого:
if (heightMode == MeasureSpec.EXACTLY) {
...
} else if (heightMode == MeasureSpec.EXACTLY) {
...
Мда, это ошибка, кончено же там MeasureSpec.EXACTLY. Запутался немного :) Огромное спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Custom layouts. Part 2. CellLayout