나는 ... 다른 사용자 ViewGroup
로 정의 ViewGroup
를 추가하는 여러 가지 방법을 디버깅 하루 종일 보냈다 그리고 그들 중 누구도 작동하지 않습니다, 그리고 그것을 할 수있는 방법을 보여줍니다 공식 문서 또는 샘플이 없기 때문에 거의 미친갔습니다Android - ViewGroup onDraw는 자식보기를 반복하고 onDraw를 명시 적으로 호출해야합니까?
HorizontalDockView
이ViewGroup
GameEntryView
이FrameLayout
기본적으로,이 정의 ViewGroup
이
HorizontalDockView
대체 onDraw
, onMeasure
등이며 모든 것이 정상적으로 호출되며 완벽하게 작동합니다. 내가 HorizontalDockView
의 생성자 내부에서 GameEntryView
을 만들고 addView(gameEntryView)
를 호출 할 때 는 그러나 gameEntryView
이제까지 관계없이 layoutParams
의 표시되지 않습니다, addView
는 어떤 스레드에서 호출, 또는 내가 부모 HorizontalDockView
에, 부하, 그리고 된 setContentView를 호출하지만. 내가 horizontalDockView.getChildAt();
을 통해 나열하면 모든 gameEntryView
개체가 아직 있습니다.
희망이 없으므로 GameEntryView의 onDraw
, onMeasure
, dispatchDraw
메쏘드를 통해 디버깅하려고 시도했으며 실제로 아무 것도 호출되지 않는다는 것을 깨달았습니다! 아니 .. 한 번도!
* 호출시 부모 (HorizontalDockView 's)의 모든 자식 뷰를 반복하고 자식을 * 명시 적으로 호출해야합니까? 나는 부모에게 슈퍼 (*)를 부탁했다.
부모 클래스와 하위 클래스 모두에서 setWillNotDraw(false);
을 호출했습니다.
부모보기에 자녀를 표시하려면 어떻게합니까? 간단한 샘플 또는 기존의 작은 오픈 소스 프로젝트가 매우 높이 평가됩니다!
대단히 감사합니다!
감사합니다! 자식보기 클래스에서 onLayout 및 onMeasure를 재정의하지만 부모보기 클래스에서 onLayout을 재정의하지 않았습니다! 상위 뷰 클래스에서 super.onMeasure()를 호출했지만 분명히 작동하지 않습니다. 그것을 지적 해 주셔서 고마워요! – Zennichimaro
안녕하세요 @FabianZeindl, 자녀가 서로 겹치지 않고 LinearLayout처럼 순차적으로 레이아웃하게하려면 어떻게해야합니까? – Zennichimaro
안드로이드 배치는 실제로 (디스플레이 조각화와 모든 것을 지나치게 일반화하기 때문에) 복잡합니다. onLayout을 적용하여 자녀에게 다른 위치와 크기를 줄 수 있습니다. 미리 계산할 수 있습니다. onMeasure 메서드를 잘 구현하여 자녀가 "행동하고"올바른 방식으로 표시되도록합니다. 그냥 시도 해 봐. –