解法:
view.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
}
});
解釋:
通常是在動態宣告 layoutInflater.inflate後又立刻需要變動 layoutInflater.inflate
(譬如取得剛宣告完的view圖的長寬或上下左右邊界,但系統還沒建立出來)的時候,
會遇到這個問題,
解法是利用getViewTreeObserver這個觀察者(android本身有的內建函式),
去透過Interface的方式在畫面確實被畫出來的時候再返回你所Override的 onGlobalLayout函式去執行你想做的動作。
這個解法蠻漂亮的,所以記錄一下,但我後來發現因為每當畫面更新的時候這個函式就會被觸發,所以還是需要一些參數來控制,詳細就不多贅敘囉!
參考網址:
http://stackoverflow.com/questions/7517636/viewgroup-finish-inflate-event
http://blog.csdn.net/guolin_blog/article/details/12921889
沒有留言:
張貼留言
有任何疑問歡迎寄信給我,
但垃圾訊息我會刪光喔!