2013-07-26 50 views
5

画面が回転した後、ビューオブジェクトの1つの高さが変更され、高さの値をピクセルで知りたいと思います。onConfigurationchanged()メソッドの後に呼び出されるもの

onConfigurationChangedメソッドは、ビューの回転を終了する前に呼び出される可能性があります。だから私はこのメソッドでビューのサイズを測定する場合、サイズはまだ前に回転の値です。

問題は、回転終了後にビューサイズの値を取得する方法ですが、アクティビティを再構築することはありません。

+1

それが回転した後に呼ばれていますので、あなたは常に、 'OnResume()'メソッドでこれを確認することができます。 – g00dy

+1

あなたの答えに感謝します。AndroidManifest.xmlファイルにアンドロイド:configChanges = "orientation | screenSize"を使用しているので、OnResume()メソッドが実行されていないようです。私は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

あなたの答えをありがとう、私はAndroidManifest.xmlファイルの** android:configChanges = "orientation | screenSize" **を設定してからonResume()が実行されないと思います。私はOnGlobalLayoutListenerの方法を研究します。 – user2614801

+0

'OnResume()'はオリエンテーションが変更されたときに常に呼び出されます。アクティビティ全体が再作成されるからです。 – g00dy

+0

私はちょうど回転についてのプログラミングガイドの記事をもう一度読んでいます。 APIレベル12より上では設定変更によってアクティビティが再開されないと言われました。 参照のアドレスはhttp://developer.android.com/guide/topics/resources/runtime-changes.htmlです。この記事の にはこのような段落 これらの設定のいずれかが変更されると、MyActivityは再起動しません。代わりに、MyActivityはonConfigurationChanged()の呼び出しを受け取ります。 ...... – user2614801

関連する問題