필자는 뷰의 래퍼의 viewTreeObserver에 첨부 된 OnGlobalLayoutListener를 사용하여 뷰의 래퍼의 getHeight() 함수에 대한 콜백에 의존하는 액티비티 내에 뷰가있는 안드로이드 앱을 작성하여 공간의 양을 결정했습니다 onCreate 동안 작업해야합니다. 일반적으로이 값은 아래 xml에서 chordDisplay가 요청한 400px보다 적습니다. 이것은 android 2.1 및 4.03을 사용하는 다양한 화면 크기에 대해 안드로이드 에뮬레이터에서 완벽하게 작동합니다. 그러나 내 불빛에 불이 들어 오면 콜백은 처음에는 방향을 세로로 전환하고 가로 또는 세로로 가로 또는 세로로 전환 할 때까지 가로로 앱을 시작할 때 올바른 높이를 반환하지 않습니다 (400 픽셀 미만 사용 가능). 즉, 내보기의 내용이 처음에 정확하게 크기가 조정되지 않았 음을 의미합니다.별난 불빛 레이아웃 문제
내가 처음 풍경에 응용 프로그램을 실행샘플 로그 캣 출력 :이 일이 될 수 있는지 이해가 안
04-22 17:32:44.546: D/onGlobalLayout(12979): chordDisplay.getHeight(): 350
:
04-22 17:31:28.249: D/onGlobalLayout(12979): chordDisplay.getHeight(): 400
그때 나는 풍경에 다시 세로로 전환 오리 엔테이션 변경 중에 발생하는 모든 사항이 앱의 onCreate()에 대한 또 다른 호출이라고 생각하십니까? 앱을 시작할 때와 똑같은 일이 일어납니다.
비슷한 방향 전환/레이아웃 버그가있는 사람이 있습니까?/왜 이런 일이 일어날 수 있는지 생각해보십시오. 어떤 도움을 주시면 감사하겠습니다 ... 고마워.
코드 : 관련 뷰에 대한
OnGlobalLayoutListener thelistener;
RelativeLayout chordDisplayWrapper;
TableRow.LayoutParams lp;
private ChordAdapter chordAdapter;
private HorizontalListView chordDisplay
thelistener = new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
chordDisplayWrapper.getViewTreeObserver().removeGlobalOnLayoutListener(this);
Log.d("onGlobalLayout", "chordDisplay.getHeight(): " + chordDisplay.getHeight());
lp = new TableRow.LayoutParams(chordDisplay.getHeight()/6 -2,chordDisplay.getHeight()/6 -2); //6 just works. I shrink it a tiny bit to compensate for some weird bug.
chordAdapter = (new ChordAdapter(mcontext, R.layout.row, magicbundle, lp));
chordDisplay.setAdapter(chordAdapter);
}
};
chordDisplayWrapper.getViewTreeObserver().addOnGlobalLayoutListener(thelistener);
XML 레이아웃 :
<RelativeLayout
android:id="@+id/chordDisplayWrapper"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center" >
<berry.chordsfree.HorizontalListView
android:id="@+id/testerList"
android:layout_width="wrap_content"
android:layout_height="400px"
android:layout_centerInParent="true"
android:gravity="center" />
</RelativeLayout>