2016-06-15 80 views
1

是否可以在Kivy列表视图的行之间应用垂直填充?我已经尝试修改列表视图和网格布局上的kv文件填充无济于事。行之间的Kivy列表视图填充

+++++++ 
+ Row + 
+++++++ 
+ Pad + 
+++++++ 
+ Row + 
+++++++ 

回答

2

下面将通过使用ListAdapter和list_items_arg_converter在那里你可以修改你的listItems中的外观ListView的项目之间添加填充物。它不会更改底层GridLayout的填充,但会改变项目的高度。

希望这有助于,
干杯

[Kivy] v1.9.1的
[Python的] v2.7.11(v2.7.11:6d1b6a68f775,2015年12月5日,20时32分19秒)[MSC诉1500 32位(英特尔)]

from kivy.uix.boxlayout import BoxLayout 
from kivy.adapters.dictadapter import ListAdapter 
from kivy.uix.button import Button 
from kivy.uix.listview import ListView, ListItemButton 
from kivy.uix.label import Label 
from kivy.uix.gridlayout import GridLayout 
from kivy.app import App 

from random import randint 


class MyApp(App): 
    items = 20 
    pad = 20 
    space = 20 
    text_border = 10 

    def build(self): 
     mainlayout = BoxLayout(orientation = 'vertical') 
     self.list_adapter = ListAdapter(data = ["Item #{0}".format(i) for i in range(self.items)], cls = ListItemButton, 
             args_converter=self.list_item_args_converter, sorted_keys = []) 
     self.list_view = ListView(adapter=self.list_adapter, size_hint_y=.3) 
     self.list_view.container.padding = self.pad 
     self.list_view.container.spacing = self.space 
     mainlayout.add_widget(self.list_view) 
     return mainlayout 

    def list_item_args_converter(self,col,obj): 
     return { 
      'text': obj, 
      'size_hint_y': .3, 
      'text_size' : (self.root.width-2*self.pad-2*self.text_border , None), 
      'height': 32, 
      'halign': 'left', 
      'valign': 'middle', 
      'deselected_color':[.5,.5,.5,1], 
      'selected_color':[1.,1.,1.,1] 
     } 


if __name__ == '__main__': 
    MyApp().run() 
+0

问题是你不能滚动到项目20,你会知道如何解决? – TheoretiCAL

+0

我更改了代码。滚动现在确实有效(因为它应该放在首位......抱歉)。这个解决方案的项目背景必须是黑色的。我不知道如何修改底层网格布局的填充后修复滚动... – Patrick

+0

我认为您以前的解决方案的问题是:“您必须仔细指定您的内容的size_hint以获得所需的滚动/摇动效果“。从滚动视图文档,这是网格布局的父亲 – TheoretiCAL