2014年10月7日 星期二

動態修改以動態建立的view視圖 layoutInflater.inflate

解法:
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

沒有留言:

張貼留言

有任何疑問歡迎寄信給我,
但垃圾訊息我會刪光喔!