【发布时间】:2012-03-18 20:09:47
【问题描述】:
我想以编程方式拖动一个视图并将其释放到另一个视图之上以进行初始化,这可能吗?
编辑:我正在寻找一种模拟拖放的方法
【问题讨论】:
标签: java android drag-and-drop
我想以编程方式拖动一个视图并将其释放到另一个视图之上以进行初始化,这可能吗?
编辑:我正在寻找一种模拟拖放的方法
【问题讨论】:
标签: java android drag-and-drop
您可以从布局中删除视图并将它们添加到其他布局(如果这是您要查找的内容)
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);
没有拖放动画,它可能会产生奇怪的结果,但有可能。
ViewGroup 将是 LinearLayout、RelativeLayout 等等。
为了模拟拖放事件,您可以手动调用 onDragListener,但有一个问题:
public boolean onDrag(View v, DragEvent event);
需要一个没有公共构造函数的DragEvent,所以你只能用null调用它
可能有一种方法可以通过伪造的 Parcel 创建一个,但这会很丑。
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);
}
另一种可能性是创建触摸事件,但如果这可行的话。至少monkey 可以做到这一点。
【讨论】: