2016-06-15 148 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