2014-11-01 122 views
5

目前,这是我的KV代码不是滚动:如何在Kivy ScrollView中滚动GridLayout?

BoxLayout: 
    id: bl 
    orientation: 'vertical' 
    padding: 10, 10 
    row_default_height: '48dp' 
    row_force_default: True 
    spacing: 10, 10 

    GridLayout: 
     id: layout_content 
     cols: 1 
     row_default_height: '20dp' 
     row_force_default: True 
     spacing: 0, 0 
     padding: 0, 0 

     Label: 
      text: 'You don''t have any downloads. Please add new download from Home screen' 

你怎么做上面的KV代码滚动?我知道Kivy ScrollView只接受一个孩子,并且我已经让GridLayout成为新的ScrollView的子代。但它不起作用。任何建议?

回答

11

根据您禁用了滚动的孩子size_hint中的至少一个documentation for ScrollView

<Controller>: 
    layout_content: layout_content 
    BoxLayout: 
     id: bl 
     orientation: 'vertical' 
     padding: 10, 10 
     row_default_height: '48dp' 
     row_force_default: True 
     spacing: 10, 10 
     ScrollView: 
      size: self.size 
      GridLayout: 
       id: layout_content 
       size_hint_y: None 
       cols: 1 
       row_default_height: '20dp' 
       row_force_default: True 
       spacing: 0, 0 
       padding: 0, 0 

       Label: 
        text: "Lorem ipsum dolor sit amet" 

,并绑定布局的尺寸使自己适应:

# main.py 

class Controller(FloatLayout): 
    layout_content=ObjectProperty(None) 

    def __init__(self, **kwargs): 
     super(Controller, self).__init__(**kwargs) 
     self.layout_content.bind(minimum_height=self.layout_content.setter('height')) 
+0

几乎正是我只是做了! :)谢谢.. @syntax_error? :D – swdev 2014-11-01 22:14:31

+3

差不多:魔鬼在细节中,特别是用kv的东西:) – synw 2014-11-02 14:29:48

+0

不得不说,我有点希望Kivy-Designer很快成为他们的主要意图。它一定会帮助我们轻松设计界面。不幸的是,这个项目似乎处于休眠状态。我错过了PyQt这种方式.. – swdev 2014-11-02 15:45:55