KivyMD应用问题:如何让second屏幕的ScrollView每次进入时回到顶部?
解决KivyMD中ScrollView进入屏幕时自动回到顶部的问题
要实现每次进入"second"屏幕时ScrollView自动回到顶部,只需利用Screen的进入事件重置ScrollView的滚动位置即可,具体方案如下:
方法1:在KV语言中直接绑定事件
修改你的KV文件,给<second>添加on_pre_enter事件,并为ScrollView设置id以便访问:
<second>: name: "second" # 屏幕即将进入时触发,重置滚动位置 on_pre_enter: self.ids.scroll_view.scroll_y = 1 ScrollView: id: scroll_view # 给ScrollView添加唯一标识 size: self.size GridLayout: size_hint_y: None height:self.minimum_height width: self.minimum_width cols: 1 padding: "5dp" MDCard: orientation: "vertical" size_hint: 1, None height: "1000dp" elevation: 80 MDFlatButton: text : 'Home' size_hint_y : 0.1 on_press : app.root.current = "Home" root.manager.transition.direction= "right"
方法2:在Python类中实现事件处理
如果你的second是自定义Screen类,也可以在Python代码中重写on_pre_enter方法:
from kivy.uix.screenmanager import Screen class second(Screen): def on_pre_enter(self, *args): # 获取ScrollView并重置到顶部 self.ids.scroll_view.scroll_y = 1
原理说明
on_pre_enter事件会在屏幕即将显示前触发,此时重置滚动位置不会让用户看到滚动跳转的过程,体验更自然。- ScrollView的
scroll_y属性:值为1对应滚动到顶部,值为0对应滚动到底部,修改该值即可控制滚动位置。
内容的提问来源于stack exchange,提问作者Yousra Qassab
相关产品推荐
相关产品推荐

