KivyMD icon indicating copy to clipboard operation
KivyMD copied to clipboard

MDFabBottomAppBarButton Widget Positioning Issue

Open AHiXilTOr opened this issue 4 months ago • 2 comments

When the screen expands sharply, the MDFabBottomAppBarButton widget goes out of frame. I have read that it is a FloatLayout, but when expanded a little (adding size), the widget does not change position relative to the position of MDBottomAppBar.

Code

from kivy.core.window import Window
from kivy.lang import Builder
from kivy.metrics import dp

from kivymd.uix.appbar import MDActionBottomAppBarButton
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp

KV = """
AdaptiveLayout:

    MDScreen:

        MDBoxLayout:
            orientation: "vertical"

            MDBottomAppBar:
                id: bottom_appbar

                MDFabBottomAppBarButton:
                    icon: "plus"
                    theme_bg_color: "Custom"
                    md_bg_color: "#373A22"
                    theme_icon_color: "Custom"
                    icon_color: "#ffffff"
"""


class AdaptiveLayout(MDBoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.bind(size=self.on_window_size, pos=self.on_window_size)

    def on_window_size(self, instance, value):
        if Window.width > dp(600):
            instance.size_hint_x = None
            instance.width = dp(600)
            instance.pos_hint = {"center_x": 0.5}
        else:
            instance.size_hint_x = 1


class BottomAppBarButton(MDActionBottomAppBarButton):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.theme_bg_color = "Custom"
        self.md_bg_color = "#373A22"
        self.theme_icon_color = "Custom"
        self.icon_color = "#ffffff"


class Example(MDApp):
    selected_cards = False

    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        self.root.ids.bottom_appbar.action_items = [
            BottomAppBarButton(icon="magnify"),
            BottomAppBarButton(icon="trash-can-outline"),
            BottomAppBarButton(icon="download-box-outline"),
        ]


Example().run()

Screenshots

image

Versions

  • KivyMD: 2.0.1.dev0

AHiXilTOr avatar Feb 28 '24 18:02 AHiXilTOr