私のAndroidアプリケーションには、グリッドレイアウトがあり、その中に5つのリニアレイアウトがあります。4 つの linearlayout にはそれぞれ 1 つのボタンが含まれ、もう 1 つの linearlayout は空です。ボタンを空のlinearlayoutにドロップしたいのですが、linearlayoutが空でない場合、ドロップした後、以前のlinearlayoutの位置を取ります。このコードの使用
ViewGroup owner = (ViewGroup) view.getParent();
LinearLayout pastContainer = (LinearLayout) owner;
ターゲットのlinearlayoutが空でない(子を持っている)場合、ボタンを保持したいlinearlayoutを取得します。このコードを使用して、ターゲットのlinearlayoutの子を取得して空かどうかを確認します
LinearLayout newcontainer = (LinearLayout) v;
int count = newcontainer.getChildCount();
ボタンを空のlinearlayoutにドロップできますが、子を持つlinearlayoutにボタンをドロップしようとするとエラーが発生します。これが私のコードです
private class MyDragListener implements OnDragListener
{
@Override
public boolean onDrag(View v, DragEvent event)
{
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// Do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
LinearLayout pastContainer = (LinearLayout) owner;
LinearLayout newcontainer = (LinearLayout) v;
int count = newcontainer.getChildCount();
if(count==0)
{
owner.removeView(view);
newcontainer.addView(view);
view.setVisibility(View.VISIBLE);
}
else
{
pastContainer.addView(view);
view.setVisibility(View.VISIBLE);
}
break;
case DragEvent.ACTION_DRAG_ENDED:
default:
break;
}
return true;
}
}
ターゲットのlinearlayoutが空でない(子を持っている)場合、ボタンを前のlinearlayoutに保つにはどうすればよいですか? ありがとう