我有2個EditText,我希望能夠拖放到我的屏幕上。我現在遇到的問題是,它們拖動得很好 - 但是當拖動被釋放時,而不是被放棄,EditText消失。無法拖放元素(在釋放拖動時消失)
我設置的聽衆喜歡這樣的:
//etUsername and etPartnerName are the EditText's I want to make draggable
etUsername.setOnTouchListener(new MyTouchListener());
etUsername.setOnDragListener(new MyDragListener());
etPartnerName.setOnTouchListener(new MyTouchListener());
etPartnerName.setOnDragListener(new MyDragListener());
在同一個片段,我有聽衆的類:
private final class MyTouchListener implements View.OnTouchListener {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
}
else
{
return false;
}
}
}
和
class MyDragListener implements View.OnDragListener {
View draggedView;
EditText dropped;
private android.widget.LinearLayout.LayoutParams layoutParams;
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
layoutParams = (LinearLayout.LayoutParams) v.getLayoutParams();
// Do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
int x_cord = (int) event.getX();
int y_cord = (int) event.getY();
break;
case DragEvent.ACTION_DRAG_EXITED:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
layoutParams.leftMargin = x_cord;
layoutParams.topMargin = y_cord;
v.setLayoutParams(layoutParams);
break;
case DragEvent.ACTION_DRAG_LOCATION:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
break;
case DragEvent.ACTION_DRAG_ENDED:
// Do nothing
break;
case DragEvent.ACTION_DROP:
// Do nothing
break;
default:
break;
}
return true;
}
}
燦」在網上找到一個可行的解決方案,並嘗試了幾個教程,並得出了相同的結果。任何人都可以看到錯誤在哪裏?
非常感謝任何幫助,謝謝。
謝謝你,我做了改變DragEvent.ACTION_DRAG_ENDED - 似乎沒有解決這個問題。您是否建議我在主機活動中編寫監聽器類?現在,這是在一個片段中完成的,該片段僅覆蓋活動的下半部分,但我希望能夠將EditText從片段拖到活動本身上(上半部分)。 –
首先嚐試通過刪除偵聽器中除DragEvent.ACTION_DRAG_ENDED之外的所有代碼來隔離問題。對於任何其他情況返回true。以這種方式拖動結束時,您應該再次看到您的隱形EditText – yshahak
我剛剛嘗試過這一點,但出於某種原因我得到了相同的結果。 EditText只是消失了第二次釋放我的水龍頭 - 我可以嘗試的其他任何東西? –