克维:我可以在scrollview里放一个scrollview吗?

2024-09-30 12:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所示,我希望在scrollview中有一个scrollview。我尝试了以下操作,但第二个滚动视图根本没有出现:

    from kivymd.app import MDApp
    from kivy.lang import Builder
    
    KV = '''
    <MyTile@SmartTileWithStar>
        size_hint_y: None
        height: "240dp"
    
    
    ScrollView:
    
        MDGridLayout:
            cols: 3
            adaptive_height: True
            padding: dp(4), dp(4)
            spacing: dp(4)
    
            MyTile:
                stars: 5
                source: "cat-1.jpg"
    
            MyTile:
                stars: 5
                source: "cat-2.jpg"
    
            MyTile:
                stars: 5
                source: "cat-3.jpg"
                
                
                
                
            ScrollView:
            
                MDGridLayout:
                    cols: 3
                    adaptive_height: True
                    padding: dp(4), dp(4)
                    spacing: dp(4)
            
                    MyTile:
                        stars: 5
                        source: "cat-1.jpg"
            
                    MyTile:
                        stars: 5
                        source: "cat-2.jpg"
            
                    MyTile:
                        stars: 5
                        source: "cat-3.jpg"
    '''
    
    
    class MyApp(MDApp):
        def build(self):
            return Builder.load_string(KV)
    
    
    MyApp().run()

这是不允许的吗?因为当前的scrollview位于RecycleView中,并且工作正常


Tags: fromimportsourcebuildercatdpjpgstars
1条回答
网友
1楼 · 发布于 2024-09-30 12:24:15

同样的问题我已经回答了很多次了,但一开始我没有意识到。问题是adaptive_height: True意味着MDGridLayout查询其子代的身高,并使用该身高计算最小身高。在您的例子中,内部ScrollView的默认值为size_hint(即(1,1))。无论何时使用adaptive_height(或height: self.minimum_height),都必须确保子项具有明确定义的高度。由于内部ScrollView没有明确定义的高度,因此MDGridLayout将其高度指定为零。下面是您的kv的一个片段,其中有一个可能的修复:

    ScrollView:    # this is the inner ScrollView
        size_hint_y: None
        height: inner_grid.height
        MDGridLayout:
            id: inner_grid
            cols: 3
            adaptive_height: True
            padding: dp(4), dp(4)
            spacing: dp(4)

这将内部ScollViewheight指定为内部MDGridLayoutheight

相关问题 更多 >

    热门问题