Гибкий:Список с плавной прокруткой типа VBOX?
-
20-09-2019 - |
Вопрос
У меня есть элемент управления списком, который использует пользовательский itemRenderer и пользовательский itemEditor.ItemRenderer/Editor — это элементы управления текстовой областью, каждый из которых содержит не менее 3 строк текста.
По умолчанию элемент управления списком прокручивается по элементу, а не по некоторому количеству пикселей, как в VBOX.
Я хочу, чтобы мой элемент управления списком больше напоминал текстовый процессор, где прокрутка вниз будет прокручивать одну строку текста за раз.Поскольку каждый элемент списка содержит как минимум 3 строки текста, прокрутка вниз пропускает все три и помещает следующий элемент списка вверху элемента управления списком.
Есть какие-нибудь предложения?
Я пытался придумать, как написать собственный VBOX, который мог бы действовать как список, но я новичок в гибкости — и программирую всего год.....Не совсем уверен, с чего начать.
Спасибо!
Решение 2
Я не получил ответа на свой комментарий относительно использования компонента FLex 4 в нашем приложении.
Однако я пришел к выводу, что невозможно создать список с плавной прокруткой и переменной высотой строки, если мои требования представляют собой большой список с множеством элементов управления.
Поскольку элемент управления «Список» не создает экземпляры всех своих элементов одновременно, он не может определить необходимые минимальные и максимальные значения прокрутки на основе общей высоты всех элементов управления.Он может определить эти значения только по КОЛИЧЕСТВУ элементов управления, которые он содержит.Облом :-(
Другие советы
Используйте элемент управления Spark List из Flex 4 (доступна бета-версия).Его интерфейс «Скроллер» гораздо более гибкий.
У меня была аналогичная проблема с использованием средства рендеринга элементов с текстом и большим пальцем.Решил эту проблему, заставив список отображать ВСЕ свои элементы перед отображением, обернув список внутри скроллера и группы и отключив прокрутку внутри самого списка.Убедитесь, что вы не указали высоту списка — пусть это сделает flex.
Мой код:(почему-то мне пришлось заключить скроллер в группу, чтобы он работал)
<s:Group width="100%" height="100%">
<s:Scroller width="100%" height="100%" horizontalScrollPolicy="off" id="listScroll">
<s:Group width="100%" height="100%">
<s:List dataProvider="{arrData}" itemRenderer="renderers.ListingItemRenderer"
verticalScrollPolicy="off" click="listingSelected()" width="100%" />
</s:Group>
</s:Scroller>
</s:Group>