【发布时间】:2012-07-13 03:19:40
【问题描述】:
在我的活动中有两个视图。两者都在不同的父母。我有他们相对于屏幕的坐标。如何互换两个视图的位置?
【问题讨论】:
标签: android
在我的活动中有两个视图。两者都在不同的父母。我有他们相对于屏幕的坐标。如何互换两个视图的位置?
【问题讨论】:
标签: android
您需要为两个视图调用父 ViewGroup 方法 removeView(),然后调用 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 方法的更多信息,并查看其他可用方法。
【讨论】:
addView(View child, int index) 指定将子代添加到父代的位置
indexOfChild(View child)添加到前面的评论。这都是我链接到的文档。
试试这个:
int x1 = view1.getX();
int y1 = view1.getY();
view1.setX(view2.getX());
view1.setY(view2.getY());
view2.setX(x1);
view2.setY(y1);
您还可以考虑使用动画效果使其看起来更漂亮。
【讨论】:
setX 自 API 11 起可用