我正在使用Nativescript创建Android应用程序,从右到左语言(如波斯语或乌尔都语) . 我有水平滚动视图,其中项目使用转发器填充 . 转发器将通过webservice获取项目数据,然后将其放在滚动视图中 .
<ScrollView id="pishnehadScroll" orientation="horizontal" propertyChange="pchange">
<Repeater items="{{ products }} ">
<Repeater.itemsLayout>
<StackLayout orientation="horizontal" horizontalAlignment="center">
</StackLayout>
</Repeater.itemsLayout>
<Repeater.itemTemplate>
<StackLayout class="pishnehad-items" horizontalAlignment="center">
<Image src="{{ imagesrc }}" />
<Label text="{{ productprice }}" />
</StackLayout>
</Repeater.itemTemplate>
</Repeater>
</ScrollView>
由于我需要从右到左显示滚动视图项,我必须获得scrollView的scrollableWidth属性并使用scrollToHorizontalOffset函数 . 随着Web服务结果的到来,问题是可滚动的宽度不断变化 . 如何获得滚动视图的最终可滚动宽度并设置scrollToHorizontalOffset函数以显示滚动视图中的最后一项(最右边的项目)?
1 回答
除了 pkanev 的评论之外,我还建议您在要加载更多项目时使用ListView或RadListView,而不是更适合屏幕的项目 . 原因是因为RadListView(和ListView)都在使用优化,例如虚拟化和单元回收,这大大提高了性能 . 使用带有大量项目的转发器将导致以后出现OutOfMemory问题...
除此之外,一旦您的Web服务获取了所有数据,您就可以访问名为scrollableWidth and scrollableHeight的ScrollView属性 . 由于这很可能是一个异步操作,您可以使用then链接到它,并在收到提取结果后调用可滚动的宽度和高度 . 您可能需要例如
使用带有scrollToIndex和“缓存”项索引的ListView的另一种方法here