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();
}
});