2013-07-26 42 views
5

屏幕旋轉後,視圖對象之一的高度發生變化,我想知道像素中的高度值。onConfigurationchanged()方法後調用什麼

onConfigurationChanged方法可能在視圖結束旋轉之前調用。所以如果我在這個方法中測量視圖大小,大小仍然是之前旋轉的值。

問題是如何在旋轉完成後獲取視圖大小值而無需重構活動。

+1

您可以隨時檢查這個在'的onResume()'方法,因爲它的旋轉後調用。 – g00dy

+1

感謝您的answer.It似乎不運行OnResume()方法,因爲我在AndroidManifest.xml文件中使用android:configChanges =「orientation | screenSize」。我在OnResume中設置了斷點,但是在收聽時沒有停止。 – user2614801

回答

4

一個可能的解決方案:

private int viewHeight = 0; 
View view = findViewByID(R.id.idOfTheView); 
view.getViewTreeObserver().addOnGlobalLayoutListener( 
    new OnGlobalLayoutListener(){ 
     @Override 
     public void onGlobalLayout() { 
      viewHeight = view.getHeight(); 
     } 

OR

@Override 
public void onResume(){ 
    int viewHeight = 0; 
    View view = findViewByID(R.id.idOfTheView); 
    viewHeight = view.getHeight(); 
} 
+0

感謝您的回答,我認爲onResume()將不會運行,因爲我在AndroidManifest.xml文件中設置了** android:configChanges =「orientation | screenSize」**。我將研究OnGlobalLayoutListener的方式。 – user2614801

+0

當方向改變時,OnResume()總是被調用,因爲整個Activity被重新創建。 – g00dy

+0

我剛剛閱讀關於旋轉的編程指南文章。它表示,在API級別12以上,配置更改不會重新啓動您的活動, 引用的地址是http://developer.android.com/guide/topics/resources/runtime-changes.html 在本文中有一個像這樣的段落 現在,當其中一個配置更改時,MyActivity不會重新啓動。相反,MyActivity接收到對onConfigurationChanged()的調用。 ...... – user2614801

相關問題