kivymd中覆盖标签的工具栏

问题描述 投票:0回答:1

我的MDToolbar覆盖了我的标签的最上方,我想让我的标签的文本出现在工具栏的下方,而且pos_hint也不工作,我想设置我的标签文本的位置,而且我想在左右两边提供padding,这是我在.kv文件中的代码。

<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
kivy python-3.7 kivy-language
1个回答
0
投票

问题是你的'kv'文件有两个规则来构建你的标签。MainScreen,并且两者都在执行中。你应该把这两条规则合二为一,这样你就可以在不同的部分引用这些规则。MainScreen 来帮助定位。举个例子来说,增加一个 idMDToolbar 允许定位 ScrollView 在它下面。像这样。

<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.
.
.
.

你的 kv 文件的功能过于复杂。我没有做任何简化,因为你可能有你这样做的原因。

© www.soinside.com 2019 - 2024. All rights reserved.