android 上带有动画的 Nativescript ListView scrollToIndex
Nativescript ListView scrollToIndex with animation on android
我正在开发一个聊天应用程序,加载列表时以及将新项目添加到列表时我需要滚动到列表底部。我可以用这个来做。
scrollToBottom() {
let lv = <ListView>frame.topmost().getViewById('messageList');
lv.scrollToIndex(this.store.items.getValue().length - 1)
}
但它立即显示列表底部
IOS 上有一个指南,但 Android
上没有
private srollListView(position: number) {
if (this._listView.ios) {
this._listView.ios.scrollToRowAtIndexPathAtScrollPositionAnimated(
NSIndexPath.indexPathForItemInSection(position, 0),
UITableViewScrollPosition.UITableViewScrollPositionTop,
true
);
}
else {
this._listView.scrollToIndex(position);
}
}
link 指导:http://nuvious.com/Blog/2016/4/4/how-to-make-the-nativescript-listview-scrolltoindex-animated-on-ios
有什么方法可以在 Android 上做到这一点吗?
您可以使用 smoothScrollToPosition
android 方法,它为您需要的 ListView 提供平滑滚动。我正在提供示例代码。
主要-page.xml
<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo">
<GridLayout>
<ListView items="{{ source }}" id="lvid" loaded="onLoaded" itemLoading="onItemLoading" itemTap="onItemTap">
<ListView.itemTemplate>
<StackLayout>
<Label text="{{title}}" textWrap="true" />
</StackLayout>
</ListView.itemTemplate>
</ListView>
</GridLayout>
</Page>
主要-page.ts
import { EventData } from 'data/observable';
import { Page } from 'ui/page';
import { HelloWorldModel } from './main-view-model';
import {ListView} from "ui/list-view"
// Event handler for Page "navigatingTo" event attached in main-page.xml
export function navigatingTo(args: EventData) {
let page = <Page>args.object;
var array=[];
for(var i=0;i<100;i++){
array.push({title:"title"+i});
}
page.bindingContext = {source:array};
setTimeout(function(){
var listview:ListView =<ListView> page.getViewById("lvid");
listview.android.smoothScrollToPosition(60);
}, 4000)
}
为了让还在寻找这个的大家知道,他们从 v4.2.0
开始为 ListView 添加了 scrollToIndexAnimated
方法
https://github.com/NativeScript/NativeScript/blob/master/CHANGELOG.md#420-2018-08-08
我正在开发一个聊天应用程序,加载列表时以及将新项目添加到列表时我需要滚动到列表底部。我可以用这个来做。
scrollToBottom() {
let lv = <ListView>frame.topmost().getViewById('messageList');
lv.scrollToIndex(this.store.items.getValue().length - 1)
}
但它立即显示列表底部
IOS 上有一个指南,但 Android
上没有private srollListView(position: number) {
if (this._listView.ios) {
this._listView.ios.scrollToRowAtIndexPathAtScrollPositionAnimated(
NSIndexPath.indexPathForItemInSection(position, 0),
UITableViewScrollPosition.UITableViewScrollPositionTop,
true
);
}
else {
this._listView.scrollToIndex(position);
}
}
link 指导:http://nuvious.com/Blog/2016/4/4/how-to-make-the-nativescript-listview-scrolltoindex-animated-on-ios
有什么方法可以在 Android 上做到这一点吗?
您可以使用 smoothScrollToPosition
android 方法,它为您需要的 ListView 提供平滑滚动。我正在提供示例代码。
主要-page.xml
<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo">
<GridLayout>
<ListView items="{{ source }}" id="lvid" loaded="onLoaded" itemLoading="onItemLoading" itemTap="onItemTap">
<ListView.itemTemplate>
<StackLayout>
<Label text="{{title}}" textWrap="true" />
</StackLayout>
</ListView.itemTemplate>
</ListView>
</GridLayout>
</Page>
主要-page.ts
import { EventData } from 'data/observable';
import { Page } from 'ui/page';
import { HelloWorldModel } from './main-view-model';
import {ListView} from "ui/list-view"
// Event handler for Page "navigatingTo" event attached in main-page.xml
export function navigatingTo(args: EventData) {
let page = <Page>args.object;
var array=[];
for(var i=0;i<100;i++){
array.push({title:"title"+i});
}
page.bindingContext = {source:array};
setTimeout(function(){
var listview:ListView =<ListView> page.getViewById("lvid");
listview.android.smoothScrollToPosition(60);
}, 4000)
}
为了让还在寻找这个的大家知道,他们从 v4.2.0
开始为 ListView 添加了scrollToIndexAnimated
方法
https://github.com/NativeScript/NativeScript/blob/master/CHANGELOG.md#420-2018-08-08