1

在我的活动中有两种观点。两者都在不同的父母。我有他们相对于屏幕的坐标。如何交换两个视图的位置?

4

2 回答 2

4

您将需要removeView()为这两个视图调用父 ViewGroup 方法,然后addView()将它们添加回来但交换。

所以如果你的父视图被称为 mommy 和 daddy,一个有一个孩子叫 foo,另一个有一个孩子叫 bar:

ViewGroup daddy = (ViewGroup)findViewById(R.id.daddy);
ViewGroup mommy = (ViewGroup)findViewById(R.id.mommy);

View foo = findViewById(R.id.foo);
View bar = findViewById(R.id.bar);

//detach children

daddy.removeView(foo);
mommy.removeView(bar);

//re-attach children

daddy.addView(bar);
mommy.addView(foo);

阅读ViewGroup的参考以获取有关 removeView 和 addView 方法的更多信息,并查看其他可用方法。

于 2012-07-12T19:14:09.717 回答
0

试试这个:

int x1 = view1.getX();
int y1 = view1.getY();

view1.setX(view2.getX());
view1.setY(view2.getY());
view2.setX(x1);
view2.setY(y1);

您还可以考虑使用动画效果使其看起来不错。

于 2012-07-12T19:07:03.887 回答