Я имею UbuntuListView
в приложении QML для Касания Ubuntu. Выше его существует другой компонент - a TextField
.
Исходное положение списка выглядит хорошим. Кроме того, если список меньше, чем доступная область, нет никаких проблем с прокруткой.
Однако, если список является достаточно большим при прокрутке и также после того, как прокрутка закончена, список перекрывает компонент выше:
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? (и если так, есть ли какое-либо возможное обходное решение?)
Добавьте clip: true
к UbuntuListView
.
По умолчанию, объекты QML имеют этот набор ко лжи, которая позволяет им тянуть вне их выделенного прямоугольника. Я предполагаю, что это - оптимизация, так как она позволяет рендереру стараться не вычислять отсечение для каждого элемента. Большая часть QML возражает, только тянут в их выделенном прямоугольнике, таким образом, Вы не замечаете это. Но представления списка со списками достаточно долго для прокрутки будут тянуть за пределами того прямоугольника, таким образом, необходимо будет включить отсечение, если Вы не хотите видеть это.