2011-12-12 57 views
1

我想添加一個視圖到一個relativelayout。 此視圖必須添加到指定的位置。在relativelayout運行時的位置視圖

我有這樣的:

int x = ...; 
    int y = ...; 
    button.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      int x = (int) event.getRawX(); 
      int y = (int) event.getRawY(); 
      v.layout(x, y, x + v.getWidth(), y + v.getHeight()); 
      return true; 
     } 
    }); 
    relativelayout.addView(button); 
    button.layout(x, y, x + button.getWidth(), y + button.getHeight()); 

的ontouchlistener的偉大工程..視圖保持與我的手指。 然而,開始始終是0,0 ...不管我的x和y是什麼。

任何人都是idee?

回答

6

我有一個解決方法。

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
lp.leftMargin = x; 
lp.topMargin = y; 
relativelayout.addView(tmpTextButtonView, lp); 

使用margin來定位浮動視圖並不是很好。但它適用於我。

+0

這不是解決辦法。這是兩種常見方式之一。另一個是獲得LayoutParams,改變它們並退後。 .layout()是一些服務函數,如果您創建ViewsGroup的自己的下拉框,則需要該函數。 – Gangnus

1

在添加到父視圖之前,您可能需要嘗試設置按鈕的位置。所以,只要將這兩行:

relativelayout.addView(button); 
button.layout(x, y, x + button.getWidth(), y + button.getHeight()); 

是這樣的:

button.layout(x, y, x + button.getWidth(), y + button.getHeight()); 
relativelayout.addView(button);