position view in relativelayout runtime

匿名 (未验证) 提交于 2019-12-03 02:35:01

问题:

i want to add a view to a relativelayout. this view must be added to a specified position.

i have this:

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

the ontouchlistener works great.. the view stays with my finger. however the startpostion is always 0, 0... it doesn't matter what my x and y is.

anyone a idee?

回答1:

i have a workaround.

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

it is not great to use margin for positioning floating views. however it works for me.



回答2:

You might want to try setting the position of your button before you add it to the parent view. So just swap these two lines:

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

to be this:

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!