Nano Hash - криптовалюты, майнинг, программирование

kivy: горизонтальный ListView

Есть ли возможность создать в рамках Kivy горизонтальный ListView?

Во всех примерах показано, как создать список элементов с вертикальной ориентацией, но мне нужно расположить их горизонтально с горизонтальной полосой прокрутки.

По умолчанию:


:                   :
|                   |
+-------------------+  ^
|                   |  ^
|     Element 5     |  ^
|                   |  |
+-------------------+  |
|                   |  |
|     Element 6     |  |
|                   |  |
+-------------------+  |
|                   |  |
|     Element 7     |  |
|                   |  v
+-------------------+  v
|                   |  v
:                   :

Я хотел бы:

... --+-----------+-----------+-----------+---- ...
      |           |           |           |
      | Element 5 | Element 6 | Element 7 |
      |           |           |           |
... --+-----------+-----------+-----------+---- ...

   <<<---------------------------------------->>>
13.08.2013

  • Я думаю, вы могли бы в принципе повернуть ListView (то есть в Scatter), а затем заполнить его виджетами, содержимое которых имеет противоположное вращение. Это дало бы желаемое поведение. 14.08.2013
  • Проблема будет заключаться в том, что текст также будет вращаться. Вы можете повернуть снова каждый текст. Нет реальной необходимости в Scatter, который предназначен для вращения, масштабирования и перевода с помощью жестов. Вместо этого вы можете использовать инструкцию холста Rotate. Недавно я написал сообщение об использовании поворота. В любом случае, использование Scatter или Rotate кажется слишком сложным для достижения чего-то, что должно быть простым. 14.08.2013

Ответы:


1

Ориентация жестко запрограммирована. Если вы посмотрите на https://github.com/kivy/kivy/blob/master/kivy/uix/listview.py вы найдете:

Builder.load_string('''
<ListView>:
    container: container
    ScrollView:
        pos: root.pos
        on_scroll_y: root._scroll(args[1])
        do_scroll_x: False
        GridLayout:
            cols: 1
            id: container
            size_hint_y: None
''')

Я скопировал этот файл в каталог проекта и заменил его на:

Builder.load_string('''
<ListView>:
    container: container
    ScrollView:
        pos: root.pos
        on_scroll_y: root._scroll(args[1])
        do_scroll_x: False
        GridLayout:
            rows: 1
            id: container
            size_hint_y: None
''')

И с этим тестовым кодом:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from listview import ListView
from kivy.uix.gridlayout import GridLayout


class MainView(GridLayout):
    def __init__(self, **kwargs):
        kwargs['cols'] = 2
        super(MainView, self).__init__(**kwargs)

        list_view = ListView(item_strings=[str(index) for index in range(100)])

        self.add_widget(list_view)


if __name__ == '__main__':
    from kivy.base import runTouchApp
    runTouchApp(MainView(width=800))

Мне удалось получить горизонтальный список. Однако это сломало прокрутку. Похоже, вам нужно больше изменить эту конфигурацию и изменить метод прокрутки, чтобы достичь желаемого результата.

19.08.2013

2

С выпуском RecyclerView все стало проще ориентировать listView в приложении для Android. В библиотеке RecyclerView есть класс LinearLayoutManager, который отвечает за определение ориентации вашего ListView.

http://whats-online.info/science-and-tutorials/87/Android-tutorial-Horizontal-RecyclerView-with-images-and-text-example/

Я попробовал демо, так что оно действительно работает очень хорошо. надеюсь понятно вам ответил

04.12.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..