I need to create an autofill app, I have a label and text input on the top, and recycle view on the bottom. However, when I run the program, the recycle view disappears, even though I have set in the string. This app will facilitate searching content by typing the name in the text input and the relevant content will appear in the recycle view, so the user is not required to view through the long list of content.
from kivy.app import App from kivy.lang import Builder from kivy.core.window import Window from kivy.uix.recycleview import RecycleView from kivy.uix.boxlayout import BoxLayout Window.size = (350, 600) Builder.load_string(''' <MyLayout>: BoxLayout: orientation: "vertical" spacing: 10 padding: 10 Label : text : 'Favourite Pizza' TextInput : font_size: 30 focus: True multiline : False <RV>: RecycleBoxLayout: viewclass: 'TextInput' default_size: None, 30 default_size_hint: 1, None size_hint_y: .8 height: self.minimum_height orientation : 'vertical' ''') class MyLayout(BoxLayout): pass class RV(RecycleView): def __init__(self, **kwrgs): super(RV, self).__init__(**kwrgs) content = ["Pepperoni", "Cheese","Papper", "Hawaii", "Seafood", "Ham", "Taco", "Onion"] self.data = [{'text':item} for item in content] print(content) class MainApp(App): title='Search App' def build(self): Window.clearcolor = (51/255, 153/255, 1, 1) return MyLayout() MainApp().run()
What should I do in order to get a complete view (label, text input & recycle view)? I want to type an input text, the relevant content will appear in the recycle view, can I use recycle view to achieve this purpose? Can I use both BoxLayout and the RecycleBoxLayout at the same time, since it refers to the different widgets?
Advertisement
Answer
First of all, dynamic classes must be in the same level as root
.
Secondly in order to make RecycleView
grow vertically, here, you have to set size_hint_y
of RecycleBoxLayout
to None
. Thus your kvlang
should now look like,
<MyLayout>: BoxLayout: orientation: "vertical" spacing: 10 padding: 10 Label : text : 'Favourite Pizza' TextInput : font_size: 30 focus: True multiline : False RV: <RV>: viewclass: 'TextInput' RecycleBoxLayout: default_size: None, 30 default_size_hint: 1, None size_hint_y: None height: self.minimum_height orientation : 'vertical'