奇怪的updateViewLayout行为

时间:2011-06-09 21:16:57

标签: android layout

我在getWindowManager().addView()添加了一个视图(自定义绘制),之后我正在修改LayoutParameters(更改x& width)并调用{ {1}}。这有效,但我得到两个屏幕刷新,第一个只根据新的getWindowManager().updateViewLayout()移动整个事物,然后根据新的宽度进行缩放。关于为什么会发生这种情况的任何想法,即使我只使用新的布局参数调用x一次?

FYI:此处提到的自定义绘制视图的updateViewLayout方法在此过程中也只被系统调用一次。

3 个答案:

答案 0 :(得分:6)

尝试:

runOnUiThread(new Runnable() {
      public void run() {
          view.updateViewLayout();
       }
    });

http://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)

如果不起作用,请检查:

How to move a view in Android?

你这样做吗?

答案 1 :(得分:2)

尝试做:

view.post(new Runnable() {

  public void run() {
    view.updateViewLayout();
  }

});

答案 2 :(得分:1)

updateViewLayout是一种可以由您的自定义ViewGroup覆盖的方法,在这种覆盖的方法中,您可以实现您想要更改的所有内容。

也许你做错了什么?

或者也许您必须像其他问题一样在UiThread中实现此代码。 - 在这种情况下,当您通过系统首次调用绘图功能异步更改参数时,您的方法可能只能更改一个参数,而在第二次调用时,第二个参数也会更改。