有時候我們需要獲得控制項的大小,但是在activity的oncreate()生命週期方法中呼叫getwidth()和getheight()方法並不能獲得控制項的寬和高,因為此時我們的介面並未被繪製完成。不過我們卻可以在onwindowfocuschanged(boolean hasfocus)這個方法中獲得控制項的大小。
@override
public void onwindowfocuschanged(boolean hasfocus)
當前視窗的activity在獲得或者失去焦點的時候就會呼叫這個方法,它是這個activity是否對使用者可見的最好標誌。
那麼對於fragment又該怎麼辦呢?fragment並未提供類似onwindowfocuschanged的方法。這時我們就需要用到viewtreeobserver了。
viewtreeobserver observer = layoutindex.getviewtreeobserver();
observer.addonpredrawlistener(new viewtreeobserver.onpredrawlistener()
return true;
}});
顧名思義,這是個對檢視變化進行監聽的觀察者。提供了以下介面,大家可以自己試著測試一下。
inte***ce viewtreeobserver.onpredrawlistener
inte***ce viewtreeobserver.onglobalfocuschangelistener
inte***ce viewtreeobserver.ongloballayoutlistener
inte***ce viewtreeobserver.onscrollchangedlistener
inte***ce viewtreeobserver.ontouchmodechangelistener
Android獲取螢幕大小
我們在做ui開發通常都會有這樣的需求,取得畫面的大小,以下這段 就能幫你在android平台中取得畫面的大小,如下 1.display display getwindowmanager getdefaultdisplay 2.log.i view height display.getheight 3...
動態改變Android控制項大小
一 方法 使用getlayoutparams 和setlayoutparams 方法 二 示例 linearlayout.layoutparams linearparams linearlayout.layoutparams aaa.getlayoutparams 取控制項aaa當前的布局引數 li...
android設定控制項的位置以及獲取控制項的座標
專案中遇到乙個問題,就是印表機打字的效果,然後找到了一位大神的輪子。android實用view系列 textview實現印表機效果 這樣確實實現了印表機打字的效果,但是又出現乙個問題。這個印表機的自定義view事先不能確定整體的高度,這樣,印表機每列印一行,高度就會變大一行,那麼在linear la...