2013-07-26 5 views
5

화면이 회전 한 후 뷰 객체 중 하나의 높이가 변경되었으므로 높이 값을 픽셀로 알고 싶습니다.onConfigurationchanged() 메서드 이후에 호출되는 내용

onConfigurationChanged 메서드는보기 회전을 완료하기 전에 호출됩니다. 따라서이 메서드에서 뷰 크기를 측정하면 크기는 여전히 회전 값입니다.

문제는 순환 완료 후보기 크기 값을 어떻게 재구성하지 않고 작업을 재구성 할 수 있는가입니다.

+1

당신은 항상'OnResume()'방식으로이를 확인할 수 있습니다. – g00dy

+1

안드로이드 : configChanges = "orientation | screenSize"를 AndroidManifest.xml 파일에 사용 했으므로 answer.it에 감사드립니다. 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(); 
     } 

또는

@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()'은 오리엔테이션 변경 사항 일 때 항상 호출됩니다. 왜냐하면 전체 Activity가 다시 생성되기 때문입니다. – g00dy

+0

방금 ​​회전에 대한 프로그래밍 가이드 기사를 다시 읽었습니다. API 레벨 12 이상에서는 구성 변경으로 활동이 다시 시작되지 않으며 참조 주소는 http://developer.android.com/guide/topics/resources/runtime-changes.html이 문서의 에 있습니다. 이 같은 단락 이제 이러한 구성 중 하나가 변경되면 MyActivity가 다시 시작되지 않습니다. 대신 MyActivity는 onConfigurationChanged()에 대한 호출을받습니다. ...... – user2614801