Hier ist ein Beispiel dafür, wie Scroll zu erweitern, um auch einen dragable Schieber zu bekommen.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.label import Label
Builder.load_string("""
<ScrollSlider>:
ScrollView:
id: scrlvw
bar_width: 0
GridLayout:
id: grid
size_hint_y:None
cols:1
height: self.minimum_height
scroll_y: slider.value
on_touch_move: slider.value = self.scroll_y
Slider:
size_hint_x: None
width: root.width*0.2
id: slider
min: 0
max: 1
orientation: 'vertical'
value: scrlvw.scroll_y
on_value: scrlvw.scroll_y = self.value
""")
class ScrollSlider(BoxLayout):
def custom_add(self, widget):
self.ids.grid.add_widget(widget)
class MyApp(App):
def build(self):
scrollslider = ScrollSlider()
for i in range(1, 100):
scrollslider.custom_add(Label(text=str(i), height=100, size_hint_y=None))
return scrollslider
if __name__ == '__main__':
MyApp().run()
Sie müssen die custom_add
verwenden, um Widgets hinzuzufügen im ScrollSlider
oder sie in Kivy zum GridLayout
hinzuzufügen.
Ich nahm etwas Inspiration von der Verbindung @ Edvardas Dlugauskas zur Verfügung gestellt.
Der von Ihnen angegebene Code funktioniert nicht mit BoxLayout
, da BoxLayout
nur die Größe des übergeordneten Elements übernimmt. Um scrollen zu können, müssen Sie sth in ScrollView
hinzufügen, was größer ist als die ScrollView
selbst.
Sie können diese Bildlaufleiste nicht zum Scrollen bewegen, Sie benötigen dazu einen separaten Schieberegler. –
Wie mache ich das, wenn ich RecycleView und BoxLayout verwende? Kannst du ein Beispiel geben? Vielen Dank. – MXDel
Ich denke, dass ich dieses Beispiel https://github.com/kivy/kivy/wiki/A-draggable-scrollbar-using-a-slider verwendet habe, als ich mein eigenes gemacht habe, probiere es aus. –