Java Android-以编程方式执行拖放
我想以编程方式拖动一个视图并将其放在另一个视图上进行初始化,这可能吗Java Android-以编程方式执行拖放,java,android,drag-and-drop,Java,Android,Drag And Drop,我想以编程方式拖动一个视图并将其放在另一个视图上进行初始化,这可能吗 编辑:我正在寻找一种模拟拖放的方法您可以从布局中删除视图,并将其添加到其他布局中(如果您正在寻找) 没有拖放动画,可能会产生奇怪的结果,但这是可能的 视图组将是一个线性布局,相对布局以及其他 对于模拟拖放事件,您可以手动调用onDragListener,但存在一个问题: public boolean onDrag(View v, DragEvent event); 需要一个没有公共构造函数的DragEvent,因此只能使用
编辑:我正在寻找一种模拟拖放的方法您可以从布局中删除视图,并将其添加到其他布局中(如果您正在寻找) 没有拖放动画,可能会产生奇怪的结果,但这是可能的
视图组
将是一个线性布局
,相对布局
以及其他
对于模拟拖放事件,您可以手动调用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是否可行。至少我可以做到这一点。非常感谢,出于方便的原因,我一直在寻找第二个答案,因为我的拖放侦听器已经完成了我需要完成的所有工作,我只是不想要太多冗余代码。由于似乎没有一个简单/优雅的解决方案,我可能不得不用另一种方式来做。您可能需要在代码中移动一点(在新方法中需要两次的部分)以使其更优雅,这应该始终有效:)这正是我的想法,也是我最后所做的:)
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);
}