2012-04-02 8 views
11

Android 활동과 관련하여 질문이 있습니다. 활동에는 방법 addContentView(View)이 있고 ViewGroup에는 (비슷합니까?) addView(View) 방법이 있습니다. 불행히도 그것의 문서화되지 않은 "어디서"에서보기 addContentView에서 배치됩니다. 보기를 하단에 추가하는 것이 LinearLayout입니까? 보기 "onTop"을 추가하는 FrameLayout과 더 비슷합니까? setContentView에 의해 설정된 ViewGroup에 따라 달라 집니까? 소스로 들어가면 addContentView은 의 추상적 인 메서드 addContentView으로 전화 할 것입니다. 불행히도이 클래스를 구현하는 클래스를 볼 수 없습니다. 그렇다면 활동 addContentView의 행동은 정확히 무엇입니까?Activity.addContentView (보기) == ViewGroup.addContentView (보기)?

답변

37

모든 활동의 기본 레이아웃은 FrameLayout입니다. 이것은 일반적으로 setContentView()을 통해 설정 한 레이아웃이이 레이아웃의 하위임을 의미합니다. addContentView()은 다른 자식을 추가하므로 FrameLayout(기존 UI 위에 새 UI 요소가 추가됨을 의미)처럼 동작합니다.

ANDROID_SDK\tools 폴더의 hierachyviewer이라는 도구를 사용하여 확인할 수 있습니다.

enter image description here

이 레이아웃 내 활동은 버튼 (여기 내 레이아웃)와 함께있는 LinearLayout을 잡고, 기본 FrameLayout이 구성되어, addContentView()를 호출하기 전에 수 있습니다 : 여기에 두 개의 스크린 샷입니다. 이것은 맨 아래 줄에 반영되어 있으며 위의 다른 요소는 제목/상태 표시 줄입니다.

enter image description here

addContentView() 통해 텍스트 뷰를 추가 한 후에는 다음과 같다. 기본 FrameLayout에 새로운 자식이 있음을 알 수 있습니다.

+3

와우. 정말 고마워, 고마워. 팁과 제안한 도구로 많은 시간을 절약 할 수 있습니다! 당신은 Stackoverflow를 그렇게 대단하게 만드는 종류의 사용자입니다! –

+0

위대한 답변! 지원! –

+1

+1에 대한 'hierachyviewer' – RootCode