首页 文章

如何显示最正确的滚动视图项目,它的项目是动态的?

提问于
浏览
0

我正在使用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 回答

  • 1

    除了 pkanev 的评论之外,我还建议您在要加载更多项目时使用ListView或RadListView,而不是更适合屏幕的项目 . 原因是因为RadListView(和ListView)都在使用优化,例如虚拟化和单元回收,这大大提高了性能 . 使用带有大量项目的转发器将导致以后出现OutOfMemory问题...

    除此之外,一旦您的Web服务获取了所有数据,您就可以访问名为scrollableWidth and scrollableHeight的ScrollView属性 . 由于这很可能是一个异步操作,您可以使用then链接到它,并在收到提取结果后调用可滚动的宽度和高度 . 您可能需要例如

    var scroll = <ScrollView>page.getViewById("pishnehadScroll");
    
    setTimeout(function() {
        console.log(scroll.scrollableWidth);
    }, 300);
    

    使用带有scrollToIndex和“缓存”项索引的ListView的另一种方法here

相关问题