Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 怪异的UpdateView布局行为_Android_Layout - Fatal编程技术网

Android 怪异的UpdateView布局行为

Android 怪异的UpdateView布局行为,android,layout,Android,Layout,我有一个视图(自定义绘制)添加了getWindowManager().addView(),之后我正在修改它的LayoutParameters(更改x&width)并调用getWindowManager().updateViewLayout())。这是可行的,但我得到了两个屏幕刷新,第一个只根据新的x移动整个东西,然后根据新的宽度缩放它。即使我只使用新的布局参数调用了一次updateViewLayout,你知道为什么会发生这种情况吗 仅供参考:onDraw此处提到的自定义绘制视图的方法在此过程中也

我有一个视图(自定义绘制)添加了
getWindowManager().addView()
,之后我正在修改它的
LayoutParameters
(更改
x
&
width
)并调用
getWindowManager().updateViewLayout()
)。这是可行的,但我得到了两个屏幕刷新,第一个只根据新的
x
移动整个东西,然后根据新的宽度缩放它。即使我只使用新的布局参数调用了一次
updateViewLayout
,你知道为什么会发生这种情况吗

仅供参考:
onDraw
此处提到的自定义绘制视图的方法在此过程中也仅被系统调用一次。

尝试执行以下操作:

view.post(new Runnable() {

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

});
尝试:

如果不起作用,请检查以下内容:


您正在这样做吗?

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

也许你做错了什么


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

是否按预期调用了on Measure或onLayout?如@Snicolas所述,可能是某个布局功能导致此重新布局/测量或父级无效。您是否解决了此问题?使用runOnUiThread only会让情况变得更糟。
runOnUiThread(new Runnable() {
      public void run() {
          view.updateViewLayout();
       }
    });