Kivy 1.10中的Listview与Recycleview和Scrollview的变化

时间:2017-09-30 18:55:02

标签: python python-2.7 listview scrollview kivy

我已升级到Kivy 1.10,因此我认为我应该将所有ListViews更改为RecycleViews。但是,我注意到处理选择比以前稍微困难一些。首先,我尝试使用SelectableLabel中的SelectableRecycleBoxLayoutkivy/uix/recycleview/__init__.py复制我所拥有的内容。但是,我注意到选择的一个奇怪的行为。我有2个RecycleView listview1listview2,如下所示。

RecycleView:
    id: listview1
    size_hint: 5./16, 25*8./600
    pos: 398-self.width, 600*0.49
    viewclass: 'SelectableLabel'
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            size: self.size
            pos: self.pos
    SelectableRecycleBoxLayout:
        color: [0, 0, 0, 1]
        colourS: (0.76,0.87,1,1)
        colourU: (1, 1, 1, 1)
        default_size: None, 25#dp(56)
        default_size_hint: 1, None
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'
RecycleView:
    id: listview2
    size_hint: 5./16, 25*8./600
    pos: 402, 600*0.49
    viewclass: 'SelectableLabel'
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            size: self.size
            pos: self.pos
    SelectableRecycleBoxLayout:
        color: [0, 0, 0, 1]
        colourS: (0.76,0.87,1,1)
        colourU: (1, 1, 1, 1)
        default_size: None, 25#dp(56)
        default_size_hint: 1, None
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'

此外,我向mySelection添加了RecycleView变量,这样我就不必循环获取所选项目的数据,并对SelectableLabel.apply_selection进行了编辑以方便此

def apply_selection(self, rv, index, is_selected):
    ''' Respond to the selection of items in the view. '''
    self.selected = is_selected
    if is_selected:
        rv.mySelection.append(rv.data[index])
    else:
        if rv.data[index] in rv.mySelection:
            rv.mySelection.remove(rv.data[index])

尽管listview1listview2具有不同的data变量,但listview1中的项目选择listview2也会被SelectableLabel选中。我猜这是因为他们的viewclass都有RecycleView。这是否意味着每个viewclass都需要它自己的不同INSERT INTO EMPLOYEE来确保不会发生这种交叉?

此外,我注意到在Scrollview中滚动在Kivy 1.10中比在1.9中更加严格。例如,快速滑动可以从Scrollview的顶部到达底部,但现在相同的滑动可能会将Scrollview向下移动大约5行文本。我想知道我需要改变什么才能从Kivy 1.9恢复行为。

0 个答案:

没有答案