Android - 以编程方式执行拖放操作

时间:2012-03-18 20:09:47

标签: java android drag-and-drop

我想以编程方式拖动一个视图并将其释放到另一个视图之上以进行初始化,这可能吗?

编辑:我正在寻找一种模拟拖放的方法

1 个答案:

答案 0 :(得分:3)

您可以从布局中删除视图并将其添加到其他布局(如果这是您要查找的内容)

ViewGroup oldGroup = (ViewGroup) findViewById(R.id.some_layout);
ViewGroup newGroup = (ViewGroup) findViewById(R.id.some_other_layout);

Button button = (Button) oldGroup.findViewById(R.id.a_button);

oldGroup.removeView(button);
newGroup.addView(button);

没有拖放动画,它可能会产生奇怪的结果,但这是可能的。

ViewGroupLinearLayoutRelativeLayout及其他人。


对于模拟Drag& Drop事件,你可以手动调用onDragListener,但是有一个问题:

public boolean onDrag(View v, DragEvent event);

期望DragEvent没有公开构造函数,因此您只能使用null

来调用它

可能有一种方法可以通过伪造的包裹创建一个,但这将是丑陋的。

private void initializationTest() {
    DragEvent event = null;
    /* maybe sth like that
    Parcel source = Parcel.obtain();
    source.writeInt(1234);
    event  = DragEvent.CREATOR.createFromParcel(source);
    */
    onDrag(theTargetView, event);
}

另一种可能性是创建touchevents但Idk如果可以的话。至少monkey可能会这样做。