Я хотел бы добавить ImageView в LinearLayout в событии onDragListener, ACTION_DROP. Я могу это сделать, однако размер ImageView очень мал при добавлении в LinearLayout. Я хотел бы, чтобы ImageView заполнил размер LinearLayout.
Я создал подкласс ImageView для создания SquareImageView (блок из красного кирпича), а также создал SquareLayout (с фоном океана), в который мне нужно добавить SquareImageView.
Ниже приведен мой код для ACTION_DROP. Также прикреплен снимок результата после перетаскивания.
@Override
public boolean onDrag(View v, DragEvent dragEvent) {
Log.d(LOG_TITLE, "OnDragListener called for action = " + dragEvent.getAction());
switch (dragEvent.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.d(LOG_TITLE, "ACTION_DRAG_StARTED");
// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
Log.d(LOG_TITLE,"ACTION_DRAG_ENTERED");
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.d(LOG_TITLE," ACTION_DRAG_EXITED");
break;
case DragEvent.ACTION_DROP:
Log.d(LOG_TITLE,"ACTION_DROP");
View view = (View) dragEvent.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
Log.d(LOG_TITLE," Tag of view = " + view.getTag());
Log.d(LOG_TITLE,"Before view tag = " + view.getTag() + " w = " + view.getLayoutParams().width + " h = " + view.getLayoutParams().height);
SquareLayout container = (SquareLayout) v;
int h = container.getHeight();
int w = container.getWidth();
Log.d(LOG_TITLE, "Container tag= "+ container.getTag() + " size= w= "+ w + " ,h= " + h );
SquareImageView iv = (SquareImageView)view;
iv.setLayoutParams(new SquareLayout.LayoutParams(
SquareLayout.LayoutParams.WRAP_CONTENT,
SquareLayout.LayoutParams.WRAP_CONTENT));
iv.getLayoutParams().height = h;
iv.getLayoutParams().width = w;
Log.d(LOG_TITLE," iv tag = " + view.getTag() + " w = " + view.getLayoutParams().width + " h = " + view.getLayoutParams().height);
container.addView(view);
view.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_ENDED:
Log.d(LOG_TITLE,"ActioN_DRAG_ENDED");
break;
default:
Log.d(LOG_TITLE, " Invalid drag event action ");
break;
}
return true;
}
};