问题
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);
来源:https://stackoverflow.com/questions/8477164/position-view-in-relativelayout-runtime