Skip to content Skip to sidebar Skip to footer

Android: After Drop, Edittext That Was Being Dragged Disapears

I'm trying to create a form in which the user can move inputs around. I have an editText and want it to be able to move it to a new location in my relativeLayout. I am able to pick

Solution 1:

I get this error message in logcat: Reporting drop result: false It's not error message. It's mean that the Action drop not returned true as result by the ViewDragListener.

Your EditText disappear because you set it invisiblity to View.INVISIBLE inside your onTouchListener and never changed it back.

try this: First choose if you want to Drag by Touch or by Long Click. You don't need both. Let's say you decided to do it by touch:

editText.setOnTouchListener(newView.OnTouchListener() {
        @OverridepublicbooleanonTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                ClipDatadata= ClipData.newPlainText("", "");
                View.DragShadowBuildershadowBuilder=newView.DragShadowBuilder(editText);

                editText.startDrag(data, shadowBuilder, editText, 0);
                editText.setVisibility(View.INVISIBLE);
                returntrue;
            }
            else
            {
                returnfalse;
            }
        }
    });

Remove all the reduntant code from the code Listener, no need it to the Drag as the system handle the drag for you. If you want the coordinations of the Drop to be the new location of the EditText than you need to assign DragListener to the EditText container RelativeLayout and retrieve them in `ACTION_DROP. If not:

 editText.setOnDragListener(new View.OnDragListener() {
        @Override
        public boolean onDrag(View v, DragEvent event) {
            if (event.getAction == DragEvent.ACTION_DRAG_STARTED){
                    layoutParams = (RelativeLayout.LayoutParams)v.getLayoutParams();
            } elseif (event.getAction() ==   DragEvent.ACTION_DRAG_ENDED)
                v.setVisibility(View.VISIBLE)

            returntrue;
        }
    });

For getting the drop location you need something like that:

findViewById(R.id.relativeLayout).setOnDragListener(new View.OnDragListener() {
    @Override
    public boolean onDrag(View v, DragEvent event) {
        if (event.getAction() ==   DragEvent.ACTION_DRAG_DROP){
             int x_cord = (int) event.getX();
             int  y_cord = (int) event.getY();
             layoutParams.leftMargin = x_cord;
             layoutParams.topMargin = y_cord;
             editText.setLayoutParams(layoutParams);

        }
        returntrue;
    }
});

Post a Comment for "Android: After Drop, Edittext That Was Being Dragged Disapears"