Arrastrar y soltar sin eliminar del propietario
Estoy utilizando en un LinearLayout con tres TextViews arrastrar y soltar para moverlo a otro contenedor. Mi código:
OnDragListener dragi = new OnDragListener() { @Override public boolean onDrag(View arg0, DragEvent arg1) { // TODO Auto-generated method stub int action = arg1.getAction(); switch (action) { case DragEvent.ACTION_DRAG_STARTED: break; case DragEvent.ACTION_DRAG_ENTERED: break; case DragEvent.ACTION_DRAG_EXITED: break; case DragEvent.ACTION_DROP: View view = (View) arg1.getLocalState(); ViewGroup owner = (ViewGroup) view.getParent(); owner.removeView(view); // LinearLayout container = (LinearLayout) arg0; container.addView(view); view.setVisibility(View.VISIBLE); } break; case DragEvent.ACTION_DRAG_ENDED: break; default: break; } return true; } };
Mi problema es que no quiero quitar la vista del contenedor de la base, debe permanecer allí y apenas agrega una copia al segundo envase.
- Hacer un lienzo transparente no transparente (tratando de sustituir el aspecto predeterminado de DragShadow con arrastrar y soltar en Android)
- ¿Cómo se puede desplazar un "punto de destino" de Android drag-shadow de su "punto de contacto"?
- ¿Cómo obtener la vista mientras arrastrar y soltar en android?
- Drag'n'Drop ConcurentModificationException
- Arrastrar y soltar con onDraglistener animar para volver a la posición original si no se deja caer en el objetivo
Gracias
- OnDragListener no recibe DRAG_STARTED o DRAG_ENDED, pero obtiene ACTION_DROP
- Android: Problema de arrastrar y soltar
- Cómo arrastrar el TextView al destino correcto otro TextView
- ¿Cómo obtener el comportamiento de pantalla de inicio de arrastrar a bin, en mi propia aplicación?
- ¿Cómo transformar currentTimeMillis a un formato de fecha legible?
- Cómo escribir un InputStream potencialmente enorme para el archivo?
- ¿Cómo restringir el arrastrar y soltar a lo largo del eje y sólo en android?
- Leer WCF REST fecha de android
Una vista sólo puede tener un padre en un momento dado, lo que puede hacer es en su arrastre, en lugar de dejar caer la vista en el nuevo contenedor crear un clon de la vista y añadir que en el nuevo contenedor.
Para clonar una vista: si su vista => Botón denominado myButton, puede hacer esto:
Button myButtonClone = new Button(context); myButtonClone.setText(myButton.getText());
Usted tendrá un clon del botón original. Esto se aplica a cualquier otra propiedad, si desea hacer un clon de un ImageView simplemente crear uno nuevo y establecer su dibujable para ser el mismo que el primer ImageView.
Si desea clonarlo, la nueva vista creada le pedirá una vista de padre. Debido a que un niño puede tener como máximo a uno de los padres directos de esa manera, tiene que asignarle un mismo o diferente padre.
Aquí está una descripción de google:
Cuando inicia un arrastre, incluye tanto los datos que se están moviendo como los metadatos que describen estos datos como parte de la llamada al sistema. Durante el arrastre, el sistema envía eventos de arrastre a los oyentes del evento de arrastre o métodos de devolución de llamada de cada vista del diseño. Los oyentes o los métodos de devolución de llamada pueden utilizar los metadatos para decidir si desean aceptar los datos cuando se descartan. Si el usuario descarta los datos sobre un objeto Ver y que el método de escucha o devolución de llamada del objeto Vista ha dicho previamente al sistema que desea aceptar la caída, el sistema envía los datos al método de escucha o devolución de llamada en un evento de arrastre
Lea esto para más detalles. Te ayudará mucho
Con el marco de arrastrar y soltar de Android, puede permitir a sus usuarios mover datos de una Vista a otra Vista en el diseño actual mediante un gesto gráfico de arrastrar y soltar. El marco incluye una clase de evento de arrastre, arrastrar oyentes y métodos y clases de ayuda.
Esto es veraniego. Si desea seguir siendo la vista en el padre existente sólo hacer una copia en el mismo padre y hacer visibilidad GONE o lo que sea su necesidad.