我在getWindowManager().addView()
添加了一个视图(自定义绘制),之后我正在修改LayoutParameters
(更改x
& width
)并调用{ {1}}。这有效,但我得到两个屏幕刷新,第一个只根据新的getWindowManager().updateViewLayout()
移动整个事物,然后根据新的宽度进行缩放。关于为什么会发生这种情况的任何想法,即使我只使用新的布局参数调用x
一次?
FYI:此处提到的自定义绘制视图的updateViewLayout
方法在此过程中也只被系统调用一次。
答案 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
中实现此代码。 - 在这种情况下,当您通过系统首次调用绘图功能异步更改参数时,您的方法可能只能更改一个参数,而在第二次调用时,第二个参数也会更改。