更改线程中视图的大小不是UI线程

时间:2017-01-13 20:22:44

标签: java android multithreading ui-thread

我有一个View,一个RelativeLayout“gesLayout”。当“gesLayout”的大小发生变化时,它会调用方法“resize”。

gesLayout = new RelativeLayout(this) {
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            resize(); // -> bei Resize die Elemente neu anordnen.
            super.onSizeChanged(w, h, oldw, oldh);
        }
    };

这是调整大小的方法:

private void resize() {

    runOnUiThread(new Runnable()  {
        @Override
        public void run() {

            ViewGroup.LayoutParams params = layButtons.getLayoutParams();
            params.height = 500;
            layButtons.setLayoutParams(params);

            layButtons.invalidate();

        }
    });
}

但是其他布局的高度没有变化。但是当我在resize()方法中运行相同的代码时,单击一个按钮后,它就完美了。

所以我的问题:如何从这里访问UI线程?正如你可以看到runOnUiThread() - 方法无效。

P.S。我已经检查过正确调用resize()方法。

1 个答案:

答案 0 :(得分:0)

如果更改布局参数,则需要调用requestLayout再次进行布局。