[英]How to control ListView's vertical scroll
我在一個團隊中,該團隊正在為平板電腦開發一款類似於雜志的應用程序。
我們正在使用ListView
來顯示一篇包含多個頁面的文章。
每row
包含大量數據,用於表示雜志的一頁。
一行在縱向模式下幾乎占據了整個屏幕,因此一行==一塊屏幕
截至目前,當用戶滾動整個ListView時,它的行為類似於普通ListView的行為-
我想要的是-
有沒有一種方法可以控制ListView的滾動方式?
我搜索了很多文章,其中有很多文章建議如何滾動到頂部或特定位置,但是實際上沒有人告訴我滾動是如何發生的,以便我可以控制它。
我想念什么嗎?
好吧,您的問題僅限於ListView,我認為可以通過計算屏幕尺寸並因此對行為進行操作來實現,但是由於我不確定ListView的技術性。 如果可以實施,我可以為您提供指導:
1)ViewPager:我認為它更適合您當前的需求,您可以在此處找到詳細信息-http: //android-developers.blogspot.in/2011/08/horizontal-view-swiping-with-viewpager.html
要么
采取本頁上提到的更多自定義要求- 如何制作可在滑動/滑動視圖之間切換的Android視圖
2)膨脹和使用動畫:我本可以使用的另一種方法是在運行時膨脹頁面並對特定手勢做出反應,並在翻轉時集成動畫。
但是,如果不是必須使用ListViews,則使用ViewPager優於ListViews,AFAIT。
ListView使用了具有私有訪問權的Scroller(GingerBread 2.3之后的OverScroller)。 不知道這是否對您有幫助,但可以為您指明正確的方向。 要獲得所需的行為,可以嘗試以下操作(我僅在ScrollView上進行了測試):
//Replace the scroller with your own
Field mScroller;
try {
mScroller = ListView.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
scroll = new OverScroller(mContext, new DecelerateInterpolator(DECELERATE_AMOUNT));
mScroller.set(yourListView, scroll);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后添加一個ontouchlistener到ListView並滾動觸摸:
mScroller.startScroll(0, startY, 0, distanceToNextPage, 500);
除了上述解決方案,您還可以嘗試以下方法:
在修飾上:
yourListView.smoothScrollToPosition(LIST_ITEM_INDEX);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.