我有这段代码(适用于Android):
handler.post(new MyRunnable());
....
static public class MyRunnable implements Runnable {
public void run() {
text.setText("Hi");
imageV.layout(imageV.getLeft()+y, 218, imageV.getLeft()+150+y, 464);
}
}
设置了文字,但imageV
的位置未更改。当我不写text.setText("Hi");
时,职位将被更改。我有AbsoluteLayout
。
答案 0 :(得分:0)
您需要使用setLayoutParams
handler.post(new MyRunnable());
....
static public class MyRunnable implements Runnable {
public void run() {
text.setText("Hi");
final ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) imageV.getLayoutParams();
params.left += y;
params.top = 218;
params.right = params.left + 150;
params.bottom = 464;
imageV.setLayoutParams(params);
}
}
请记住,在完成至少一次布局传递后,您可以使用view.getLeft()
等。在此之前,这将返回0.如果你想通过布局做到这一点。你还必须调用requestLayout()。但是调用layout + requestLayout()几乎就是setLayoutParams的实现,所以你最好不要使用它。