更新 要理解我的问题,这就是我需要实现的目标: 将图标从应用程序抽屉拖动到主屏幕(,如果可能不在网格视图中),如图中所示,
旧(这只是为了了解其工作原理):
我试图在同一个Activity或其他活动中实现从ListView
到customView
拖动可点击图标而没有容器(Listview or Gridview...
),这是一张图片你要了解更多:
但是当我将图标放在右侧区域我没有看到对象时,在日志中我看到:I/ViewRootImpl﹕ Reporting drop result: true
这里是我的代码:
class MyDragListener implements View.OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
...
case DragEvent.ACTION_DROP:
LinearLayoutAbsListView itemo = (LinearLayoutAbsListView)findViewById(R.id.paneko);
View child = getLayoutInflater().inflate(R.layout.list_item, null);
itemo.addView(child);
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
return true;
}
}
我的XML文件:
...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="@android:color/background_dark"
android:orientation="horizontal" >
<com.moapps.elfassimounir.simple.LinearLayoutAbsListView
android:id="@+id/paneuj"
android:background="@android:color/background_light"
android:orientation="vertical"
>
<ListView
android:id="@+id/listview1"
android:layout_width="100dp"
android:layout_height="wrap_content" />
</com.moapps.elfassimounir.simple.LinearLayoutAbsListView>
<com.moapps.elfassimounir.simple.LinearLayoutAbsListView
android:id="@+id/paneko"
android:background="@android:color/background_light"
android:orientation="vertical" >
</com.moapps.elfassimounir.simple.LinearLayoutAbsListView>
</LinearLayout>
...
任何信息或参考资料(教程,文档......)都会非常有用
答案 0 :(得分:2)
看一下向WindowManager(WM)添加视图。当您长按要拖动的项目时,创建自己的该项目的位图并将其添加到WM,以便可以在没有视图边界约束的情况下移动它。当您收到ACTION_UP或等效事件时,将当前的x,y映射到拖动项目正下方的实际视图(Rect类可能会有所帮助)。然后,您可以将此项目添加到该特定视图。