Como manter um UbuntuListView entre seus limites?

0

Eu tenho um UbuntuListView em um aplicativo QML para o Ubuntu Touch. Acima, há outro componente - um TextField .

A posição inicial da lista parece boa. Além disso, se a lista for menor que a área disponível, não haverá problemas com a rolagem.

Noentanto,sealistaforgrandeosuficiente,durantearolagemetambémapósaconclusãodarolagem,alistasesobrepõeaocomponenteacima:

Main.qml

importQtQuick2.4importQtQuick.Layouts1.1importUbuntu.Components1.2MainView{width:units.gu(40)height:units.gu(30)Page{ColumnLayout{spacing:units.gu(1)anchors{margins:units.gu(2)fill:parent}TextField{id:textInputLayout.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
            }
        }
    }
}

Eu tentei alterar a propriedade z nos componentes, mas isso não ajudou.

Estou usando indevidamente a API? Ou é um bug no Ubuntu SDK? (e se sim, existe alguma solução possível?)

    
por Cos64 20.08.2015 / 20:04

1 resposta

1

Adicione clip: true ao UbuntuListView .

Por padrão, os objetos QML têm esse conjunto como false, o que permite que eles desenhem fora do retângulo alocado. Suponho que isso seja uma otimização, pois permite que o representante evite o cálculo de recorte para cada elemento. A maioria dos objetos QML desenha apenas dentro do retângulo alocado, então você não percebe isso. Mas as visualizações de lista com listas longas o suficiente para rolar desenham fora desse retângulo, então você precisa ativar o recorte se não quiser ver isso.

    
por Robert Schroll 21.08.2015 / 21:24