gpt4 book ai didi

java - Android - 以编程方式执行拖放

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:52 25 4
gpt4 key购买 nike

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

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

最佳答案

您可以从布局中删除 View 并将它们添加到其他布局(如果这是您正在寻找的)

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 可以是 LinearLayoutRelativeLayout 等。


为了模拟拖放事件,您可以手动调用 onDragListener,但存在一个问题:

public boolean onDrag(View v, DragEvent event);

需要一个没有公共(public)构造函数的 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);
}

另一种可能性是创建 touchevents,但不知道是否可行。至少 monkey可能会那样做。

关于java - Android - 以编程方式执行拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com