2012-07-12 81 views

回答

4

您將需要調用父視圖組方法removeView()兩個視圖然後addView()將它們添加回但交換。

所以,如果你的父母的意見被稱爲媽媽和爸爸,一個有一個孩子叫foo,那麼其他的孩子叫吧:

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); 

閱讀有關removeView和addView方法的詳細信息ViewGroup參考並查看其他可用的方法。

+0

我不知道視圖組的ID。如何獲得視圖的視圖組? – 2012-07-12 19:54:23

+1

您可以在子視圖上使用視圖getParent方法 – Merlin 2012-07-12 20:52:33

+0

每個父級擁有兩個以上的視圖,因此不會發生確切的交換。 – 2012-07-12 22:58:55

0

試試這個:

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

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

你也可以考慮的動畫效果,使這個好看。

+0

梅林是正確的,我錯過了關於他們的部分屬於不同的父母 – CSmith 2012-07-12 19:18:01

+0

也''setX'只有API 11可用 – 2012-07-12 19:30:58

+0

動畫是否在一個單獨的線程完成? – 2012-07-13 10:20:10