Проект vlayout — это мощное расширение LayoutManager для ListContainer, предоставляющее набор макетов для ListContainer. Оно позволяет обрабатывать сложные ситуации, когда в одном ListContainer используются сетка, список и другие макеты.
Предоставляя пользовательский LayoutManager для ListContainer, VirtualLayout может элегантно располагать дочерние представления с различным стилем в одном представлении. Пользовательский LayoutManager управляет серией layoutHelpers, каждый из которых реализует определённую логику макета для элементов определённого диапазона позиций. Кстати, также поддерживается реализация нашего собственного layoutHelper и предоставление его фреймворку.
ListContainer listContainer = (ListContainer) findComponentById(ResourceTable.Id_list_container);
VirtualLayoutManager virtualLayoutManager = new VirtualLayoutManager(this);
DelegateAdapter delegateAdapter = new DelegateAdapter(virtualLayoutManager);
// Затем мы можем установить под-адаптеры
GridLayoutHelper layoutHelper = new GridLayoutHelper(2,2,shapeElement1,250);
adapterList.add(new SubAdapter(this, layoutHelper, 2));
adapterList.add(new SubAdapter(new GridLayoutHelper(3, 120,shapeElement1,2000)));
delegateAdapter.addAdapters(adapterList);
listContainer.setItemProvider(delegateAdapter);
final List<LayoutHelper> helpers = new LinkedList<>();
final GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(4, 28, shapeElement1, shapeElement2,250);
helpers.add(DefaultLayoutHelper.newHelper(7, shapeElement1, shapeElement2, 250));
helpers.add(gridLayoutHelper);
layoutManager.setLayoutHelpers(helpers);
listContainer.setItemProvider(new VirtualLayoutAdapter(layoutManager) {
@Override
public Component getComponent(int position, Component component, ComponentContainer componentContainer) {
return layoutManager.getComponent(position, component, componentContainer);
}
mLayoutHelper.viewImage = ResourceTable.Media_author; //где mLayoutHelper.viewImage — фактический идентификатор ресурса изображения, присутствующий в папке media
mLayoutHelper.viewType = "Image"; //где mLayoutHelper.viewType должен быть «Image» в случае компонента Image, для компонента Text не нужно передавать что-либо или использовать этот член.
Примечание: В настоящее время не поддерживается установка массива изображений в компоненте Image.
Особенности Добавлена поддержка
1.0.0 Первый выпуск
Slice отладки:
Поддерживаемые функции:
Неподдерживаемые функции:
Основной срез:
Поддерживаемые функции:
Неподдерживаемые функции:
Срез OnePlusN:
Поддерживаемые функции:
Неподдерживаемые функции:
Тестовый срез:
Поддерживаемые функции:
VlayoutSlice:
Поддерживаемые функции:
Функции, которые не поддерживаются в приложении: Из-за недоступности RecyclerView и текущей поддержки ListContainer упомянутые функции не поддерживаются (FloatLayoutHelper, StickyLayoutHelper, FixLayoutHelper, ScrollFixLayoutHelper). Есть следующие ограничения:
Дочерние элементы StaggeredGridLayout могут быть отрисованы до видимости экрана.
GridLayoutHelper должен иметь количество дочерних элементов в соответствии с диапазоном, чтобы он мог заполнить ширину. В противном случае будут созданы пустые пространства.
Функция перехода будет рассматривать некоторые наборы дочерних элементов как один элемент (например, в сетке одна строка будет рассматриваться как один элемент).
Нумерация задаётся на основе макетов (каждый макет начинается с 0).
Функциональность перехода не обрабатывается для всех случаев (так же, как и в оригинале).
Не поддерживаются изменения ориентации (ориентация макета/устройства).
Не поддерживается индивидуальное расположение полей дочернего представления с помощью API setMargins.
RangeGridLayoutHelper: если мы передадим неправильный диапазон (то есть превысим диапазон больше, чем общее количество элементов), то он будет рисовать все компоненты, определённые в этом объекте, от начальной точки до конечной точки, и если мы увеличим элементы массива setWeight больше, чем счётчик диапазона, поведение может быть разным. SetHGap и SetVGap не поддерживаются.
Примечания:
Тестирование проводилось с использованием оригинального lib без использования библиотечного компонента. Здесь мы подготовили его с использованием GridLayoutHelper.
Текущий макет и ориентация установлены на основе исходного поведения. Дополнительное тестирование этих представлений не проводилось.
Цвета и поля будут немного отличаться от оригинала.
Баннерный макет такой же, как LinearLayout. Поэтому никаких изменений не было сделано, чтобы выделить его.
Способ 1: Сгенерируйте har-пакет из библиотеки и добавьте его в папку lib. Добавьте следующий код в gradle записи:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
Способ 2:
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:vlayout:1.0.0'
Vlayout доступен под лицензией MIT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )