Android 在kivy中的另一个小部件下面滚动一个scrollview
我想在kivy中的scrollview gridlayout顶部覆盖一个矩形、按钮和标签,以提供一个带有当前屏幕名称的横幅和导航弹出窗口的按钮。我已经制作了一个gridlayout按钮列表,可以链接到未来的益智应用程序中的小游戏 我想放在顶部的内容在screenmanager.kv中,网格布局在gameslist.kv中 一切都显示在屏幕上。gridlayout垂直滚动。但是,它会在screenmanager.kv的内容上滚动,而不是在它下面滚动。我希望横幅保持可见,漂浮在网格上,始终保持在窗口顶部的同一位置,不管用户在gridlayout中滚动到哪里 screenmanager.kv:Android 在kivy中的另一个小部件下面滚动一个scrollview,android,python,python-3.x,kivy,Android,Python,Python 3.x,Kivy,我想在kivy中的scrollview gridlayout顶部覆盖一个矩形、按钮和标签,以提供一个带有当前屏幕名称的横幅和导航弹出窗口的按钮。我已经制作了一个gridlayout按钮列表,可以链接到未来的益智应用程序中的小游戏 我想放在顶部的内容在screenmanager.kv中,网格布局在gameslist.kv中 一切都显示在屏幕上。gridlayout垂直滚动。但是,它会在screenmanager.kv的内容上滚动,而不是在它下面滚动。我希望横幅保持可见,漂浮在网格上,始终保持在窗口
<GamesListScreen>:
canvas.before:
Color:
rgba: 1, 0.6, 0.6, 1
Rectangle:
size: self.width, (self.height * 0.15)
pos: 0, (self.height * 0.85)
Button:
color: 1, 1, 1, 0
size_hint: None, None
height: Window.height * 0.15
width: self.height
pos: 0, (root.top * 0.85)
on_release:
root.open_NavPopup()
print('pressed')
Image:
source: 'images/NavIcon.png'
keep_ratio: False
allow_stretch: True
y: self.parent.y
x: self.parent.x
size: self.parent.size
Label:
font_size: self.width * 0.1
color: 1,1,1,1
center_x: self.width / 2
y: self.height / 2.35
text: 'Games List'
我尝试将canvas.before更改为canvas.after,并将覆盖层放在gridlayout中,使其与之一起滚动。两者都不起作用。有什么建议吗?或者我应该放弃并做一些在x轴上滚动的事情吗?请参考示例和输出以了解详细信息 gameslist.py
#:导入ScrollEffect kivy.effects.scroll.ScrollEffect
#:导入按钮kivy.uix.Button.Button
#:导入窗口kivy.core.Window.Window
#:包括screenmanager.kv
:
方向:“垂直”
游戏屏幕:
滚动视图:
效果:滚动效果
大小提示:1,无
尺寸:窗宽(窗高*.85)
网格布局:
是否滚动\u x:False
高度:自身最小高度
尺寸提示:无
间距:5,5
科尔斯:1
关于家长:
对于范围(10)中的i:txt=“Game{}”。格式(i);self.add\u小部件(按钮(text=txt,size\u hint\u y=None,
高度=窗高度(0.1))
输出
有关详细信息,请参考示例和输出 gameslist.py
#:导入ScrollEffect kivy.effects.scroll.ScrollEffect
#:导入按钮kivy.uix.Button.Button
#:导入窗口kivy.core.Window.Window
#:包括screenmanager.kv
:
方向:“垂直”
游戏屏幕:
滚动视图:
效果:滚动效果
大小提示:1,无
尺寸:窗宽(窗高*.85)
网格布局:
是否滚动\u x:False
高度:自身最小高度
尺寸提示:无
间距:5,5
科尔斯:1
关于家长:
对于范围(10)中的i:txt=“Game{}”。格式(i);self.add\u小部件(按钮(text=txt,size\u hint\u y=None,
高度=窗高度(0.1))
输出
#:import ScrollEffect kivy.effects.scroll.ScrollEffect
#:import Button kivy.uix.button.Button
<RootWidget>
effect_cls: ScrollEffect
GridLayout:
do_scroll_x: False
height: self.minimum_height
size_hint: 1, None
size: Window.width, (Window.height * .85)
spacing: 5, 5
padding: [0,(Window.height * .17),0,0]
cols: 1
on_parent:
self.add_widget(Button(text = "Game 1", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 2", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 3", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 4", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 5", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 6", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 7", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 8", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 9", size_hint_y = None, height = Window.height * .1))
self.add_widget(Button(text = "Game 10", size_hint_y = None, height = Window.height * .1))
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.scrollview import ScrollView
Builder.load_file('gameslist.kv')
class RootWidget(ScrollView):
pass
class runGamesList(App):
def build(self):
root = RootWidget()
return root
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from screenmanager import GamesListScreen
class RootWidget(BoxLayout):
pass
class GamesListApp(App):
def build(self):
return RootWidget()
if __name__ == "__main__":
GamesListApp().run()
#:import ScrollEffect kivy.effects.scroll.ScrollEffect
#:import Button kivy.uix.button.Button
#:import Window kivy.core.window.Window
#:include screenmanager.kv
<RootWidget>:
orientation: 'vertical'
GamesListScreen:
ScrollView:
effect_cls: ScrollEffect
size_hint: 1, None
size: Window.width, (Window.height * .85)
GridLayout:
do_scroll_x: False
height: self.minimum_height
size_hint_y: None
spacing: 5, 5
cols: 1
on_parent:
for i in range(10): txt = "Game {}".format(i); self.add_widget(Button(text = txt, size_hint_y = None,
height = Window.height * .1))