2

全部

我需要动态更改 ImageView 的位置,并使用以下代码

int x=100,y=100;
RelativeLayout.LayoutParams mparam = new RelativeLayout.LayoutParams((int)(LayoutParams.FILL_PARENT),(int)(LayoutParams.FILL_PARENT));
    mparam.topMargin=x;
    mparam.leftMargin=y;
    ball.setLayoutParams(mparam);
    x+=100;
    y+=100;

但我没有得到任何改变。

可能吗?如何?

4

2 回答 2

4

You change margin, but not its position and, it seems, it's not a good solution. Try to use method View.layout(int, int, int, int) Documentation says:

public void layout (int l, int t, int r, int b)

Since: API Level 1
Assign a size and position to a view and all of its descendants
This is the second phase of the layout mechanism. (The first is measuring). 
In this phase, each parent calls layout on all of its children to position them. 
This is typically done using the child measurements that were stored in 
the measure pass(). Derived classes should not override this method. Derived 
classes with children should override onLayout. In that method, they should call 
layout on each of their children.

Parameters

l   Left position, relative to parent
t   Top position, relative to parent
r   Right position, relative to parent
b   Bottom position, relative to parent
于 2011-07-07T07:31:36.400 回答
1

您可以在视图上调用 setPadding。因此,在您的代码中(顺便说一下,您应该将其放入代码块中!),只需添加对此方法的调用:

int x=100,y=100; 
LayoutParams mparam = new LayoutParams((int)(LayoutParams.FILL_PARENT),(int) (LayoutParams.FILL_PARENT));
ball.setLayoutParams(mparam); 
ball.setPadding(x,y,0,0);

x+=100; y+=100;
ball.setPadding(x,y,0,0);
于 2011-07-07T07:42:20.923 回答