Я создаю макет QML с Column
и несколькими Row
внутри. Первая строка содержит кнопку, вторая строка содержит список элементов, полученных из сетевой службы. Я хочу иметь возможность «потянуть, чтобы обновить» в списке, поэтому я использую PullToRefresh
из ListView
.
Однако это добавляет видимую строку «Потяните, чтобы обновить...» в верхней части вывода строки, фактически появляющуюся в верхней части первой строки. В этом есть смысл, за исключением того, что я хочу, чтобы этот текст был скрыт под первой строкой до тех пор, пока он не выскользнет при вытягивании списка во второй строке.
Вот минимальный QML для воспроизведения, который можно запустить с qmlscene
:
import QtQuick 2.4
import QtQuick.XmlListModel 2.0
import Ubuntu.Components 1.3
MainView {
id: root
width: units.gu(50)
height: units.gu(75)
Column {
Row {
Button {
id: selector
text: "Select"
}
}
Row {
ListView {
id: listOfThings
height: 500
width: 400
model: things
delegate: Text {
text: title + " (" + pubDate + ")"
}
PullToRefresh {
refreshing: things.status === XmlListModel.Loading
onRefresh: things.reload()
}
}
}
}
XmlListModel {
id: things
source: "https://news.yahoo.com/rss/"
query: "/rss/channel/item"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "pubDate"; query: "pubDate/string()" }
}
}
Я не могу скрыть строку «Потяните, чтобы обновить...» под первой строкой. Вещи, которые я пробовал до сих пор, которые не работали:
- установить
z
значений, большее значение для первой строки, меньшее для 2-й: никакого эффекта - закрытие кнопки в первой строке внутри
Rectangle
: прямоугольник не растягивается автоматически, чтобы соответствовать кнопке, а размеры строки сворачиваются до 0 - размещение белой
Rectangle
в первом ряду справа от кнопки: это было наиболее многообещающе, но это настоящий хак - установка фона строки: не нашел, как это возможно
Это должно быть распространенным вариантом использования, но я не могу найти ответов/примеров. Как скрыть строку «Потяните, чтобы обновить...» под строкой над ней, пока она не будет перетянута в строку ниже? Или Column
и Row
не подходят для использования при этом?