position view in relativelayout runtime

僤鯓⒐⒋嵵緔 提交于 2020-01-21 19:08:14

问题


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

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