Как разместить метку в центре экрана в виде прокрутки в Kivy? - PullRequest
0 голосов
/ 01 апреля 2020

У меня проблемы с размещением надписи, в которую добавлено изображение, используя холст в виде прокрутки. Желаемый вывод - иметь метку с текстовым содержимым в виде абзаца, затем метку с изображением и затем другую метку с текстовым содержанием в качестве абзаца.

Изображение отображается в правильном положении по вертикали, как между двумя текстовыми метками, но оно не располагается по центру, когда я пытаюсь уменьшить изображение путем умножения self.parent.width на .9 или независимо от десятичного числа. Он привязывает его к левому экрану, и заполнение в метке не работает, тогда как оно работает в метках с текстовым содержимым. Я искал документацию и другие примеры, но не смог найти решение этой проблемы. Если кто-то имеет опыт работы с этим или может дать какие-либо рекомендации, я был бы очень признателен. Пожалуйста, смотрите мой код ниже:

BoxLayout:
    size_hint_y: .7
    orientation: 'vertical'
    canvas.before:
       Color:
           rgba: rgba('#FFFFFF')
       Rectangle:
           pos: self.pos
           size: self.size

    ScrollView:
        id: sv
        size_hint_y: None
        height: self.parent.height
        effect_cls: 'ScrollEffect'
        GridLayout:
            id: Content
            cols: 1
            size: self.minimum_size
            size_hint: (1, None)
            height: labelscroll1.texture_size[1]
            Label:
                id: labelscroll1
                padding: ['20dp', '0dp']
                color: rgba('#000000')
                font_size: mtx.sp(14)
                text_size: self.width, None
                size: self.parent.width, self.texture_size[1]
                size_hint: (None,None)
                text: "Some text"

            Label:
                id: labelscroll2
                padding: ['5dp','0dp']
                size_hint: (None, None)
                width:  max(self.texture_size[0], self.parent.width)
                height: 300
                halign: 'center'
                markup: True
                canvas.before:
                    Rectangle:
                        pos: self.pos
                        size: self.size                                 
                        source: 'Table.png'

            Label:
                id: labelscroll3
                padding: ['20dp', '0dp']
                color: rgba('#000000')
                font_size: mtx.sp(14)
                text_size: self.width, None
                size: self.parent.width, self.texture_size[1]
                size_hint: (None,None)
                text: "Some text"

Отступы - это четыре пробела в реальном коде, но форматирование здесь может быть немного неправильным из-за вставки.

1 Ответ

0 голосов
/ 01 апреля 2020

Не видя вашего реального кода, я могу только догадываться, в чем проблема на самом деле. Но хороший способ получить что-то в центре ячейки GridLayout - это использовать AnchorLayout. Попробуйте заменить ваш средний Label в вашем kv на:

        AnchorLayout:
            size_hint: (1.0, None)
            height: 300
            Label:
                id: labelscroll2
                padding: ['5dp','0dp']
                size_hint: (None, None)
                width:  max(self.texture_size[0], self.parent.width)
                height: 300
                halign: 'center'
                markup: True
                canvas.before:
                    Rectangle:
                        pos: self.pos
                        size: self.size                                 
                        source: 'Table.png'
...