Я хочу сделать действие, в котором я могу перетащить textView внутри пустого textView, и это должно скопировать весь контент внутри пустого textView.Каждый раз, когда я перетаскиваю текстовое представление, оно не заменит существующее текстовое представление.Я пытаюсь перетащить texview в пустое texview, чтобы оно заменяло все, что было пропущено в указанной области.Ниже приведен пример кода:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.view.View;
import android.widget.Button;
import android.content.Intent;
import android.content.ClipData;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View.DragShadowBuilder;
import android.view.View.OnDragListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
public class thirdquiz2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thirdquiz2);
TextView textView16 = findViewById(R.id.textView16);
TextView textView18 = findViewById(R.id.textView18);
TextView textView17 = findViewById(R.id.textView17);
textView17.setText("<head>");
TextView textView19 = findViewById(R.id.textView19);
textView19.setText("</html>");
TextView textView23 = findViewById(R.id.textView23);
textView23.setText("<tags>");
TextView textView24 = findViewById(R.id.textView24);
textView24.setText("<html>");
TextView textView21 = findViewById(R.id.textView21);
textView21.setText("</head>");
textView21 = (TextView)findViewById(R.id.textView21);
textView23 = (TextView)findViewById(R.id.textView23);
textView24 = (TextView)findViewById(R.id.textView24);
textView16 = (TextView)findViewById(R.id.textView16);
textView18 = (TextView)findViewById(R.id.textView18);
textView21.setOnTouchListener(new ChoiceTouchListener());
textView23.setOnTouchListener(new ChoiceTouchListener());
textView24.setOnTouchListener(new ChoiceTouchListener());
textView16.setOnDragListener(new ChoiceDragListener());
textView18.setOnDragListener(new ChoiceDragListener());
}
private final class ChoiceTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData Data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(Data, shadowBuilder, view, 0);
return true;
} else {
return false;
}
}
}
private class ChoiceDragListener implements OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
TextView textDropped = (TextView) event.getLocalState();
textDropped.setVisibility(View.VISIBLE);
View view = (View) event.getLocalState();
TextView dropTarget = (TextView) v;
TextView dropped = (TextView) view;
if(dropTarget.getText().toString().charAt(0) == dropped.getText().toString().charAt(0))
{
view.setVisibility(View.VISIBLE);
dropTarget.setText(dropTarget.getText().toString() + dropped.getText().toString());
Object tag = dropTarget.getTag();
dropTarget.setText(dropped.getText());
if(tag!=null)
{
int existingID = (Integer)tag;
findViewById(existingID).setVisibility(View.INVISIBLE);
}
dropTarget.setTag(dropped.getId());
dropTarget.setOnDragListener(null);
}
else
break;
case DragEvent.ACTION_DRAG_ENDED:
break;
default:
break;
}
return true;
}
}
}