我試圖實現拖放目標可見(或添加它們),只要用戶開始拖動。當拖動開始時顯示拖放目標
文檔解釋說,這應該onDrag
當接收ACTION_DRAG_STARTED
,然後可以用來說突出View
爲能夠接受拖來處理。
但是,當沒有拖動時,我的視圖(實際上是LinearLayout
)應該看起來不同,並且在啓動拖動時顯示拖放目標。
普通的樣子:
[Item A][Item B]
當拖動開始就應該是這樣的:
[ ][Item A][ ][Item B][ ]
當空括號表示這是拖動可以被丟棄的位置。
我嘗試了下面的事情來實現這一目標:
1)動態添加視圖
當頂層容器接收ACTION_DRAG_STARTED
,動態添加放置目標的看法。問題:新添加的視圖本身(或任何其他事件)永遠不會收到ACTION_DRAG_STARTED
,因此它們不能接受放置。
2)有隱藏放置目標
總是有View.GONE
放置目標中可用的實際項目所有的時間之間,只是讓他們View.VISIBLE
當拖拽開始:
if(event.getAction() == DragEvent.ACTION_DRAG_STARTED) {
// Make all containers visible:
for(int i = 0; i < cc.getChildCount(); i++) {
cc.getChildAt(i).setVisibility(View.VISIBLE);
}
}
問題:顯然View.GONE
也意味着該視圖不會收到事件。與View.INVISIBLE
一樣。
那麼,我有什麼選擇?使用如View.VISIBLE
並在拖動開始/結束時做一些動態調整大小?似乎真的很傻...
有什麼更好的建議嗎?
你可以動態地添加視圖,拖動監聽器 這裏是一個例子,但onClick Listener嘗試將其更改爲onDrag Lister http://stackoverflow.com/questions/8722595/how-to-add-onclicklistener-to -dynamically-generated-text-view/8722685 – Radwa