RefreshLayout#
Example#
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.factory import Factory
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.button import MDIconButton
from kivymd.icon_definitions import md_icons
from kivymd.uix.list import ILeftBodyTouch, OneLineIconListItem
from kivymd.theming import ThemeManager
from kivymd.utils import asynckivy
Builder.load_string('''
<ItemForList>
text: root.text
IconLeftSampleWidget:
icon: root.icon
<Example@MDFloatLayout>
MDBoxLayout:
orientation: 'vertical'
MDTopAppBar:
title: app.title
md_bg_color: app.theme_cls.primary_color
background_palette: 'Primary'
elevation: 4
left_action_items: [['menu', lambda x: x]]
MDScrollViewRefreshLayout:
id: refresh_layout
refresh_callback: app.refresh_callback
root_layout: root
spinner_color: "brown"
circle_color: "white"
MDGridLayout:
id: box
adaptive_height: True
cols: 1
''')
class IconLeftSampleWidget(ILeftBodyTouch, MDIconButton):
pass
class ItemForList(OneLineIconListItem):
icon = StringProperty()
class Example(MDApp):
title = 'Example Refresh Layout'
screen = None
x = 0
y = 15
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Orange"
self.screen = Factory.Example()
self.set_list()
return self.screen
def set_list(self):
async def set_list():
names_icons_list = list(md_icons.keys())[self.x:self.y]
for name_icon in names_icons_list:
await asynckivy.sleep(0)
self.screen.ids.box.add_widget(
ItemForList(icon=name_icon, text=name_icon))
asynckivy.start(set_list())
def refresh_callback(self, *args):
'''
A method that updates the state of your application
while the spinner remains on the screen.
'''
def refresh_callback(interval):
self.screen.ids.box.clear_widgets()
if self.x == 0:
self.x, self.y = 15, 30
else:
self.x, self.y = 0, 15
self.set_list()
self.screen.ids.refresh_layout.refresh_done()
self.tick = 0
Clock.schedule_once(refresh_callback, 1)
Example().run()
API - kivymd.uix.refreshlayout.refreshlayout
#
- class kivymd.uix.refreshlayout.refreshlayout.MDScrollViewRefreshLayout(*args, **kwargs)#
Refresh layout class.
For more information, see in the
ThemableBehavior
andMDScrollView
class documentation.- root_layout#
The spinner will be attached to this layout.
root_layout
is aObjectProperty
and defaults to None.
- refresh_callback#
The method that will be called at the on_touch_up event, provided that the overscroll of the list has been registered.
refresh_callback
is aObjectProperty
and defaults to None.
- spinner_color#
Color of the spinner in (r, g, b, a) or string format.
New in version 1.2.0.
spinner_color
is aColorProperty
and defaults to [1, 1, 1, 1].
- circle_color#
Color of the ellipse around the spinner in (r, g, b, a) or string format.
New in version 1.2.0.
circle_color
is aColorProperty
and defaults to None.
- show_transition#
Transition of the spinner’s opening.
New in version 1.2.0.
show_transition
is aStringProperty
and defaults to ‘out_elastic’.
- show_duration#
Duration of the spinner display.
New in version 1.2.0.
show_duration
is aNumericProperty
and defaults to 0.8.
- hide_transition#
Transition of hiding the spinner.
New in version 1.2.0.
hide_transition
is aStringProperty
and defaults to ‘out_elastic’.
- hide_duration#
Duration of hiding the spinner.
New in version 1.2.0.
hide_duration
is aNumericProperty
and defaults to 0.8.
- on_touch_up(self, *args)#
Receive a touch up event. The touch is in parent coordinates.
See
on_touch_down()
for more information.
- refresh_done(self)#