Как сохранить UbuntuListView между его границами?

Я имею UbuntuListView в приложении QML для Касания Ubuntu. Выше его существует другой компонент - a TextField.

Исходное положение списка выглядит хорошим. Кроме того, если список меньше, чем доступная область, нет никаких проблем с прокруткой.

Initial list

Однако, если список является достаточно большим при прокрутке и также после того, как прокрутка закончена, список перекрывает компонент выше:

Scrolled list

Main.qml

import QtQuick 2.4
import QtQuick.Layouts 1.1

import Ubuntu.Components 1.2

MainView {

    width: units.gu(40)
    height: units.gu(30)

    Page {
        ColumnLayout {
            spacing: units.gu(1)
            anchors {
                margins: units.gu(2)
                fill: parent
            }

            TextField {
                id: textInput
                Layout.fillWidth: true;
                placeholderText: i18n.tr("Add an item")
            }

            MyList {
                anchors {
                    left: parent.left
                    right: parent.right
                }

                Layout.fillHeight: true
            }
        }
    }
}

MyList.qml

import QtQuick 2.4
import Ubuntu.Components 1.2
import Ubuntu.Components.ListItems 1.0

Item {

    ListModel {
        id: listModel
        ListElement {itemName: 'one'}
        ListElement {itemName: 'two'}
        ListElement {itemName: 'three'}
        ListElement {itemName: 'four'}
    }

    UbuntuListView {
        anchors.fill: parent

        model: listModel

        delegate: ListItem {
            id: listItem

            divider.visible: false
            Label {
                id: label
                text: itemName

                verticalAlignment: Text.AlignVCenter
                height: parent.height
            }
        }
    }
}

Я пытался измениться z свойство на компонентах, но это не помогло.

Я неправильно использую API? Или действительно ли это - ошибка в SDK Ubuntu? (и если так, есть ли какое-либо возможное обходное решение?)

0
задан 20 August 2015 в 21:04

1 ответ

Добавьте clip: true к UbuntuListView.

По умолчанию, объекты QML имеют этот набор ко лжи, которая позволяет им тянуть вне их выделенного прямоугольника. Я предполагаю, что это - оптимизация, так как она позволяет рендереру стараться не вычислять отсечение для каждого элемента. Большая часть QML возражает, только тянут в их выделенном прямоугольнике, таким образом, Вы не замечаете это. Но представления списка со списками достаточно долго для прокрутки будут тянуть за пределами того прямоугольника, таким образом, необходимо будет включить отсечение, если Вы не хотите видеть это.

1
ответ дан 28 July 2019 в 19:48

Другие вопросы по тегам:

Похожие вопросы: