2011-06-09 153 views
9

我有一個觀點(自定義繪製)中加入了getWindowManager().addView()後來我modifiying它的LayoutParameters(改變x & width)和呼叫getWindowManager().updateViewLayout()。這個工作,但我得到兩個屏幕刷新,第一個只移動整個事情根據新的x和後來一個縮放它根據新的寬度。關於爲什麼會發生這種情況的任何想法,即使我只用updateViewLayout來調用新的佈局參數?怪異updateViewLayout行爲

FYI:onDraw此處提到的自定義繪製視圖的方法在此過程中也僅由系統調用一次。

+0

onMeasure或onLayout按預期方式調用? – Snicolas 2012-12-18 19:41:02

+0

正如@Snicolas所說的,也許某個佈局函數導致了這種重新佈局/度量或父無效 – 2012-12-19 18:52:55

+0

你解決了這個問題嗎?使用runOnUiThread只會造成更糟糕的情況。 – 2013-11-20 08:13:08

回答

2

儘量做到:

view.post(new Runnable() { 

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

}); 
+0

這種工作? – lokoko 2012-12-20 07:54:01

1

updateViewLayout是一種可以被自定義ViewGroup覆蓋的方法,在這種被覆蓋的方法中,您可以實現所有您想要更改的方法。

也許你做錯了嗎?

或者也可能你需要在UiThread中實現這個代碼,就像其他問題一樣。 - 在這種情況下,當您通過系統第一次調用繪圖函數異步更改參數時,您的方法可能只能更改一個參數,而在第二次調用時,第二個參數也會更改。