Вы можете удалить виды из макетов и добавить их в другие макеты (если это то, что вы ищете)
ViewGroup oldGroup = (ViewGroup) findViewById(R.id.some_layout);
ViewGroup newGroup = (ViewGroup) findViewById(R.id.some_other_layout);
Button button = (Button) oldGroup.findViewById(R.id.a_button);
oldGroup.removeView(button);
newGroup.addView(button);
Нет анимации перетаскивания и это может дать странные результаты, но это возможно.
A ViewGroup
будет LinearLayout
, RelativeLayout
и т. П.
Для имитации событий Drag & Drop вы можете вызвать onDragListener вручную, но есть одна проблема:
public boolean onDrag(View v, DragEvent event);
ожидает DragEvent
, у которого нет открытого конструктора, поэтому вы можете вызывать его только с помощью null
. Возможно, существует способ создать его с помощью поддельной посылки, но это будет уродливо.
private void initializationTest() {
DragEvent event = null;
/* maybe sth like that
Parcel source = Parcel.obtain();
source.writeInt(1234);
event = DragEvent.CREATOR.createFromParcel(source);
*/
onDrag(theTargetView, event);
}
Еще одна возможность - возможно, создать touchevents, но Idk, если это сработает.По крайней мере, обезьяна могла бы сделать это.