2012-09-02 61 views
2

我試圖在android(ICS)的GridView上實現拖放,但是當我將item拖動到屏幕邊緣時, GridView不滾動。我怎樣才能實現這個功能?Android:如何自動垂直滾動GridView將項目拖動到邊緣

+0

我從來沒有在gridviews上工作過,但是你可以在gridview上覆蓋onTouchListerner,如果x座標達到邊緣,你可以移動到下一個字段。可能有更好的選擇。 – rahul

+0

你可以發表一些關於如何拖拽GridView元素的代碼嗎? – Luksprog

回答

2

首先,如果您不需要支持android 2.x(API < 11),那麼Andorid Drag and Drop tutorial就是您要找的。我從來沒有嘗試過這種方式,因爲我必須在2.x上實現它,但我看了一下,看起來非常簡單。

爲了實現自動滾動,我猜你可以在網格視圖上使用ACTION_DRAG_EXITEDACTION_DRAG_LOCATION,並在看到位置在視圖邊界旁邊時手動觸發滾動。

如果你必須在2.x上實現它,那麼它將變得更加困難,你基本上需要自己實現所有的DRAG事件或它們的一個子集。 我在ListView中做過一次,你需要做的是:

  • 覆蓋gridView touchEvent。
  • 用行動ACTION_MOVE,ACTION_DOWN,ACTION_UP火拖動事件

啓用GridView的項目圖紙緩存(setDrawingCacheEnabled),並使用getDrawingCache()複製上DRAG_START視圖的位圖。 比你要做的是在ACTION_MOVE事件給你的位置上使用在GridView頂部繪製的位圖。

這不容易,但如果你花時間,你可以設法得到它。

還有什麼,我沒有檢查今天,但也許你可以嘗試谷歌有點看看是否有人花時間來實現它,併發布它的開源。