私はScrollViewとListViewを内部に持つWMLアプリケーションを持っています。 ListViewの項目の高さは可変です。ScrollViewのリストビュー:スクロール位置を知る方法(下部にありますか)
実際にはスクロールバーが移動したときと、スクロールバーが移動していないときとを知る必要があります。私の目標は、スクロールが下部にある場合にのみListViewにアイテムを追加するときに、スクロールを下部に維持することです(positionViewAtEnd())。一番下にない場合、positionViewAtEnd()は使用されません。
私は高さで "再生"しようとしました、contentHeigh & contentYです。場合によっては(スクロールが下部:contentHeight == contentY + height)、それ以外の時間contentY値が負の値に変わり、コードが失敗します...
助けが必要ですか?私はスクロールが下にか
であるかどうかを検出するために、いくつかのプロパティの変更で 'atYEnd' で試してみましたどうもありがとう
サンディエゴ
おかげJPヌルミ、
これはうまくいくように見えますが、それを 'onCountChanged'で使用して、スクロールを最下部に置く(またはしない)ようにします
ListViewの高さはすべてメッセージでいっぱいですが、受信メッセージが ListViewの高さ(1番目のcontentYが '0'ではない)を満たしている場合は、1つの場合ではなく機能します。
それがクリアされている場合、私は知らない...
私は(代理人を含む)をテストするために私のコードを簡素化しており、今ではそのように思える:
FocusScope {
clip: true
id: focusScopeView
width: parent.width; height: parent.height
ScrollView {
width: parent.width; height: parent.height
ListView {
id: listTexts
width: parent.width; height: parent.height
property bool bScrolled: false
model: textsModel
delegate: Text { text: "Contact:\t" + eventText }
onCountChanged: {
if (!bScrolled)
positionViewAtEnd();
}
onContentYChanged: {
bScrolled = !atYEnd;
if (atYEnd)
positionViewAtEnd()
}
onContentHeightChanged: {
if (!bScrolled)
positionViewAtEnd();
}
}
}
}
おかげに関して!
サンディエゴ
... – Diego
ははい、それは何 'verticalLayoutDirectionです:あなたは、モデルの初めに挿入したときListView.BottomToTop'は'例えば、ありませんlistModel.insert (0、{テキスト: "foo"}) ' – jpnurmi