回答
那麼肯定有辦法做到這一點。但我認爲,關鍵是要做到這一點是否明智。
該列表是一個標準的Android控件,在所有應用程序中表現持續不變。所以如果我發現一個在應用程序中表現不一樣的列表,我會感到驚訝。您可以隨時將手指放回屏幕上以停止投擲。這就是說,如果你想做額外的工作,你可以繼承列表視圖並覆蓋它的觸摸方法。知道該怎麼做的最好方法是獲取ListView的源代碼(ListView in Android 1.6)。
我的看法是,你不應該修改這種行爲,因爲這種行爲是用戶期望的行爲。
但是,你的問題。我沒有嘗試過,但理論上它應該起作用。
執行OnScrollListener
到您的ListView
並使用onScrollStateChanged()
方法檢查當前狀態是否爲SCROLL_STATE_FLING
。在確定一次擲骰的滾動操作之後,您可以使用getFirstVisiblePosition()
方法獲得ListView
的第一個可見位置,然後可以使用smoothScrollToPosition()
,將值作爲參數。
我沒有嘗試Pompe de velo
的解決方案,但由於smoothScrollToPosition()
不適用於低於8的API級別,所以這不適用於我。
我同意,改變默認行爲是不是一個很好的想法,但有時你需要。所以這裏是我使用反射的(骯髒的)解決方案。這是迄今爲止不推薦的方式,因爲它是一種黑客攻擊,但它對我很有用。可能有更好的解決方案,但我沒有找到它。
class StopListFling {
private static Field mFlingEndField = null;
private static Method mFlingEndMethod = null;
static {
try {
mFlingEndField = AbsListView.class.getDeclaredField("mFlingRunnable");
mFlingEndField.setAccessible(true);
mFlingEndMethod = mFlingEndField.getType().getDeclaredMethod("endFling");
mFlingEndMethod.setAccessible(true);
} catch (Exception e) {
mFlingEndMethod = null;
}
}
public static void stop(ListView list) {
if (mFlingEndMethod != null) {
try {
mFlingEndMethod.invoke(mFlingEndField.get(list));
} catch (Exception e) {
}
}
}
}
,我們查找了Android的源代碼(AbsListView),給它一個ACTION_CANCEL的TouchEvent,可以停止一扔。這很容易。
listView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_CANCEL, 0, 0, 0));
這是正確的答案。這應該被接受,因爲它沒有任何反思。好的工作夥伴! – 2014-01-23 20:23:14
您可以通過重寫onTouchEvent並調用smoothScrollBy來防止API 8中的ListViews拋出。
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_UP:
this.smoothScrollBy(0, 0);
break;
}
return super.onTouchEvent(ev);
}
取而代之的是從投擲滾動和滾動0px開始。
- 1. 停止滾動視圖動畫時低於某個速度
- 2. 如何停止滾動動畫
- 3. 停止滾動動畫不起作用?
- 4. JQuery Tools可滾動 - 停止動畫?
- 5. iOS動畫滾動視圖
- 6. Android ListView在滾動視圖內停止滾動
- 7. Android:滾動視圖停止滾動時檢測
- 8. Android:當水平滾動視圖停止滾動時檢測
- 9. 滾動列表視圖
- 10. 上滾動列表視圖
- 11. TableView /滾動視圖列表
- 12. 列表視圖滾動
- 13. 滾動列表視圖
- 14. 列表視圖和動畫
- 15. 列表視圖動畫
- 16. 列表視圖OnitemClick動畫
- 17. 如何在滾動時停止列表視圖中的清單列表項目
- 18. 更新的UITextView裏面的UIScrollView而滾動,使滾動視圖停止滾動
- 19. 在滾動視圖中的特定滾動後停止滾動 - Titanium
- 20. 滾動視圖內的列表視圖
- 21. 在滾動視圖時停止在recyclerview中的項目動畫android
- 22. 爲滾動視圖啓用滾動而不是列表視圖
- 23. 滾動視圖滾動列表視圖不是佈局
- 24. 列表視圖不滾動滾動視圖內
- 25. 如何停止滾動畫廊?
- 26. iPhone:如何停止視圖中的動畫視圖釋放前
- 27. popviewcontroller從視圖2導致視圖1停止動畫背景
- 28. 視圖滾動時終止
- 29. UIGestureRecognizer阻止表視圖滾動
- 30. 頁停止滾動
我會迴應MarvinLabs關於保持您的列表與用戶*期望*工作方式一致的意見。 – 2011-06-16 09:30:36