我有一个UbuntuListView
用于 Ubuntu Touch 的 QML 应用程序。在它上面,还有另一个组件——一个TextField
.
列表的初始位置看起来不错。此外,如果列表小于可用区域,则滚动没有问题。
但是,如果列表足够大,在滚动时以及滚动完成后,列表会与上面的组件重叠:
主.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
}
}
}
}
我的列表.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 吗?还是 Ubuntu SDK 中的错误?(如果是这样,是否有任何解决方法?)
添加
clip: true
到UbuntuListView
.默认情况下,QML 对象将此设置为 false,这允许它们在分配的矩形之外绘制。我认为这是一种优化,因为它允许渲染器避免为每个元素计算裁剪。大多数 QML 对象仅在其分配的矩形内绘制,因此您不会注意到这一点。但是列表视图的列表长度足以滚动时会绘制到该矩形之外,因此如果您不想看到它,则需要打开裁剪。