Vinz
Vinz

Reputation: 265

Toolbar covering the label in kivymd

My MDToolbar is covering the uppermost part of my label, I want the text of my label to appear below the toolbar also the pos_hint is not working on this I want to set the position of my text of label also I want to provide padding on left and right side here's my code in .kv file

<MainScreen>:
    BoxLayout:
        canvas:
            Color:
                rgb: 0, 0, 0, 0
            Rectangle:
                pos: root.pos
                size: root.size
        ScrollView:
            Label:
                text:
                    """
                    A boy and a girl were playing together. The boy had a collection of marbles. The girl has some
                    sweets with her. The boy told the girl that he would give her all his marbles in exchange for the
                    sweets with her. The girl agreed.

                    The boy kept the most beautiful and the biggest marbles with him and gave her the remaining marbles.
                    The girl gave him all her sweets as she promised. That night the girl slept peacefully. But the boy
                    could not sleep as he kept wondering if the girl has hidden some sweets from him the way he had
                    hidden the best marbles from her.

                    Moral of the Story :

                    If you do not give 100 percent in a relationship, you will always kept doubting if the other person
                    has given her / his hundred percent. This is applicable for any relationship like love, employee –
                    employer, friendship, family, countries, etc…
                    """
                font_size: '20sp'
                height: self.texture_size[1]
                size: self.texture_size
                text_size: root.width, None
                size_hint_x: 1.0
                size_hint_y: None
                halign: "auto"
                valign: "middle"
ScreenManager:
    id: screen_manager

    MainScreen:
        name: 'main'

        NavigationLayout:

            ScreenManager:

                Screen:

                    MDToolbar:
                        title: "Story"
                        anchor_title: 'left'
                        pos_hint: {"top": 1}
                        elevation: 10
                        left_action_items: [['menu', lambda x: nav_drawer.set_state()]]


            MDNavigationDrawer:
                title: 'Story A Day'
                id: nav_drawer
                swipe_distance: 10

                ContentNavigationDrawer:
                    id: content_drawer
                    screen_manager: screen_manager
                    nav_drawer: nav_drawer

Upvotes: 2

Views: 822

Answers (1)

John Anderson
John Anderson

Reputation: 39012

The problem is that your 'kv' file has two rules for building your MainScreen, and both are being executed. You should combine the two rules into one, so that you can refer to different parts of the MainScreen to help in positioning. As an example, adding an id to the MDToolbar allows positioning of the ScrollView below it. Like this:

<MainScreen>:
    BoxLayout:
        canvas:
            Color:
                rgb: 0, 0, 0, 0
            Rectangle:
                pos: root.pos
                size: root.size
ScreenManager:
    id: screen_manager

    MainScreen:
        name: 'main'

        NavigationLayout:

            ScreenManager:

                Screen:

                    MDToolbar:
                        id: toolbar  # id for use below
                        title: "Story"
                        anchor_title: 'left'
                        pos_hint: {"top": 1}
                        elevation: 10
                        left_action_items: [['menu', lambda x: nav_drawer.set_state()]]

                    ScrollView:
                        #  use toolbar id to position the ScrollView
                        pos_hint: {'top': 1.0 - toolbar.height / self.parent.height}
                        Label:
                            text:
                                """
                                A boy and a girl were playing together. The boy had a collection of marbles. The girl has some
                                sweets with her. The boy told the girl that he would give her all his marbles in exchange for the
                                sweets with her. The girl agreed.
.
.
.

Your kv file is overly complicated for what it does. I haven't made any simplifications because you may have reasons for the way you are doing it.

Upvotes: 2

Related Questions