我无法改变ImageView的位置和TextView的setText

时间:2011-12-11 21:23:16

标签: android

我有这段代码(适用于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

1 个答案:

答案 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的实现,所以你最好不要使用它。