【问题标题】:How do I use ScrollEffect on a ListView to prevent overscrolling?如何在 ListView 上使用 ScrollEffect 来防止过度滚动?
【发布时间】:2017-11-28 20:35:52
【问题描述】:

我正在使用相同的方式来防止过度滚动这样的 TextView:

ScrollView:
    id: scrlv
    size_hint: (1, 1)
    effect_cls: ScrollEffect #avoid overscrolling
    TextInput:
        id: ro_log
        size_hint: (1, None)
        height: max(self.minimum_height, scrlv.height) #required to enable scrolling when list starts to grow
        readonly: True
        background_color: 0,0,0,0
        foreground_color: 1,1,1,1

但是对于一个ListView,它包含了一个ScrollView,下面的kv规范就没有效果了:

ListView:
    id: commandListView
    effect_cls: ScrollEffect #no effect !
    adapter: ListAdapter(data=[], cls=main.CommandListButton, args_converter=lambda row_index,rec: {'text':rec, 'on_press':root.commandSelected})
    height: '0dp'
    size_hint_y: None

【问题讨论】:

    标签: android python-3.x kivy kivy-language


    【解决方案1】:

    这是解决方案,正如 SP SP 在上面的评论中给出的那样:

    ListView:
        id: commandListView
        adapter: ListAdapter(data=[], cls=main.CommandListButton, args_converter=lambda row_index,rec: {'text':rec, 'on_press':root.historyItemSelected})
        height: '0dp'
        size_hint_y: None
        on_parent: self.container.parent.effect_cls = ScrollEffect #prevents overscrolling
    

    这当然需要

    #: import ScrollEffect kivy.effects.scroll.ScrollEffect
    

    在 kv 文件的顶部。

    【讨论】:

      【解决方案2】:

      下面是基本ListView的规则:

      <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
      

      所以如果你想访问你的 ListView 的 ScrollView,你可以这样做:

      self.container.parent.effect_cls = ScrollEffect
      

      【讨论】:

      • 但是你把这行代码放在哪里呢?确定不在 kv 文件中?
      • @Jean-PierreSchnyder 在 kv 中我会尝试 ListView: on_parent: #put it here 但如果这不起作用,我会将其放入 python 文件中。
      猜你喜欢
      • 2019-10-31
      • 2023-03-13
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2019-06-18
      • 2022-01-16
      相关资源
      最近更新 更多