gpt4 book ai didi

android - OnDrag 无法接收 DragEvent.ACTION_DROP

转载 作者:行者123 更新时间:2023-11-29 17:52:58 26 4
gpt4 key购买 nike

我遇到了以下问题:我想为 LinearLayout 实现 View.DragOnListener。当我长按屏幕时,OnDrag 方法接收到 DragEvent.ACTION_DRAG_STARTED,但是当我在屏幕上释放拖动时。此方法无法接收 DragEvent.ACTION_DROP。希望得到大家的一些帮助。这是我的代码:

package com.example.dragdroptestapp;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.widget.LinearLayout;

public class MyLinearLayout extends LinearLayout implements View.OnDragListener{

private final String TAG = "MyLinearLayout";
public MyLinearLayout(Context context) {
super(context);
initLongClick();

}


public MyLinearLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initLongClick();
}


public MyLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initLongClick();
}

@Override
public boolean onDragEvent(DragEvent event) {
final int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
Log.e(TAG, "Started");
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.e(TAG, "Entered");
break;
case DragEvent.ACTION_DROP:
Log.e(TAG, "Droped");
break;
default:
Log.e(TAG, "action event" + String.valueOf(action));
break;
}
return true;
}

@Override
public boolean onDrag(View v, DragEvent event) {
Log.e(TAG, "onDrag");
final int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
Log.e(TAG, "Started");
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.e(TAG, "Entered");
break;
case DragEvent.ACTION_DROP:
Log.e(TAG, "Droped");
break;
default:
break;
}
return true;
}
private void initLongClick() {
setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {

Log.e(TAG, "LongClick");
View.DragShadowBuilder myShadow = new DragShadowBuilder(v);
v.startDrag(null, myShadow, null, 0);

return true;
}
});
}


}

最佳答案

我刚刚解决了类似的问题。神秘地接收 ACTION_DRAG_STARTED 和 ACTION_DRAG_ENDED 而不是 ACTION_DROP 的 View 位于另一个更大的 View 之下,该 View 也在监听拖动事件(但只有在它们被拖放到特定区域时才会对它们做任何事情)。

我通过将较大的 View 移到 XML 布局文件的顶部来解决此问题,这将它放在较小的 View “下方”。

关于android - OnDrag 无法接收 DragEvent.ACTION_DROP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670807/

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