2009-11-15 90 views
4

我有一個自定義的視圖,從Button派生,我想在運行時定位,相對於另一個視圖。因爲當我的視圖被誇大時(因爲佈局還沒有開始),我不知道其他視圖的位置,所以我利用onSizeChanged處理程序來設置我的視圖相對於其他視圖的位置。以編程方式更改LayoutParams不起作用。爲什麼?

onSizeChanged

LayoutParams lp = new LayoutParams(this.getMeasuredWidth(), this.getMeasuredHeight()); 
lp.leftMargin = x; 
lp.topMargin = y; 
this.setLayoutParams(lp); 

forceLayout(); 

然而,這沒有任何影響。怎麼來的?

+0

觀察:offsetTopAndBottom()和offsetLeftAndRight()完成這項工作。必須是關於這些方法的東西,它的工作方式不同於設置新的LayoutParams(尚未查看源代碼)。 – Matthias 2009-11-16 09:34:01

回答

4

有些事情要考慮:

  1. 確實正在執行該代碼?
  2. 您是否已經檢查過hierarchyviewer中的用戶界面以查看邊界是否已設置,但它們沒有您期望的視覺效果?
  3. 您確定只有通過RelativeLayout才能處理好嗎?
  4. 您是否試過修改現有的LayoutParams而不是更換它?
+0

嗨馬克。 1,2:是的; 3:做不到,我和父FrameLayout合併; 4:不,我會試一試。 – Matthias 2009-11-16 09:32:48

相關問題