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

您需要使用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的实现,因此最好改用它。

  ask by Jozef translate from so

未解决问题?本站智能推荐: