【问题标题】:Toolbar covering the label in kivymd覆盖kivymd中标签的工具栏
【发布时间】:2020-05-04 18:33:49
【问题描述】:

我的 MDToolbar 覆盖了我的标签的最上面部分,我希望我的标签文本出现在工具栏下方,pos_hint 也不起作用我想设置我的标签文本的位置我也想提供左侧和右侧的填充是我在 .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】:

    问题是你的“kv”文件有两条规则来构建你的MainScreen,并且都在执行。你应该把这两条规则合二为一,这样你就可以参考MainScreen的不同部分来帮助定位。例如,将id 添加到MDToolbar 允许将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 文件的功能过于复杂。我没有做任何简化,因为你这样做的方式可能有原因。

    【讨论】:

    • 即使我在工具栏中添加了 id 作为 MDToolbar 中的 id,也没有定义名称工具栏
    • 请注意,您只能在定义该 id 的同一规则中引用一个 id。任何未缩进的行都会启动一个新规则。
    • 但是为什么你把它放在这个屏幕小部件里面它是我的 MainScreen 类的一部分
    • 你就是这样做的。
    • 你误解了那行检查我的代码,因为我编辑它你可以看到我想要什么
    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2012-06-30
    • 2016-03-10
    • 2012-09-04
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多