KivyMD
KivyMD copied to clipboard
Tab contents MDBoxLayout adaptive_width mis-layout.
Description of the Bug
An MDBoxLayout in tabs content is mis-layedout when adaptive_width = True. In this case the intent is for "Button in BoxLayout" to be located centrally in the space below "Button 2"
adaptive_size correctly lays out the BoxLayout if the design intent is for the layout to behave as if there is no BoxLayout.
Code and Logs
from kivy.lang import Builder
from kivy.uix.scrollview import ScrollView
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import MDButton, MDButtonText
from kivymd.uix.tab import (
MDTabsItemIcon,
MDTabsItemText,
MDTabsItem,
)
KV = '''
MDScreen:
md_bg_color: self.theme_cls.backgroundColor
MDBoxLayout:
orientation:'vertical'
MDTabsPrimary:
id: tabs
pos_hint: {"center_x": .5, "center_y": .5}
MDDivider:
MDTabsCarousel:
id: related_content_container
size_hint_y: None
height: dp(320)
MDLabel:
text:'Button BoxLayout has adaptive_width = True.'
halign:'center'
'''
class Example(MDApp):
def on_start(self):
super().on_start()
self.root.ids.tabs.add_widget(
MDTabsItem(MDTabsItemText(text='A Tab')))
bl = MDBoxLayout(orientation='vertical',
size_hint_y=None)
bl.bind(minimum_height=bl.setter('height'))
for i in range(3):
bl.add_widget(MDButton(MDButtonText(text='Button '+str(i)),
pos_hint={"center_x": .5, "center_y": .5}))
bl2 = MDBoxLayout(orientation='horizontal',
pos_hint = {'center_x':0.5},
adaptive_width = True)
bl2.add_widget(MDButton(MDButtonText(text='Button in BoxLayout'),
pos_hint={"center_x": .5, "center_y": .5}))
bl.add_widget(bl2)
sv = ScrollView()
sv.add_widget(bl)
self.root.ids.related_content_container.add_widget(sv)
def build(self):
self.theme_cls.primary_palette = "Olive"
return Builder.load_string(KV)
Example().run()
Screenshots
Versions
- OS: Windows 11
- Python: Python 3.11.1
- Kivy: 2.3.0
- KivyMD: 2.0.1.dev0