2011-04-28 3 views
18

사용자 지정보기 그룹 및 사용자 지정보기를 사용하여 몇 가지 문제가 발생했습니다. 나는 이것을 위해 많은 검색을 이미 해왔지만, 만약 내가 뭔가를 놓쳤다면 나를 거기에 연결 시켜줄 자유롭게 느낀다. 네, android dev 웹 사이트에서 View, ViewGroups, measure 및 layout pass에 대한 모든 것을 읽었습니다. 그러나 Java 샘플 코드 없이는 여전히 혼란 스럽습니다.누구나 측정 및 레이아웃 예제가있는 사용자 정의보기가 포함 된 사용자 정의보기 그룹의 좋은 예가 있습니까? (Java에서)

1) 저의 이해는 child-views가 onMeasure와 onLayout을 구현해야한다는 것입니다. 이것은 부모 ViewGroup이 각각의 자식에 대해 measure() 및 layout()을 수동으로 호출해야한다는 의미입니까? 그렇다면이 전화는 어디에 위치해야합니까? 그들은 부모의 onMeasure 및 onLayout 메서드에 있어야합니까? 그렇다면이 전체 재귀 프로세스를 시작하는 첫 번째 measure() 및 layout() 호출은 어디에 있습니까?

2) 나는 childview의 레이아웃 매개 변수가 다음과 같은 것을 사용하여 설정할 수 있음을 알았습니다. 이 코드는 부모 뷰 그룹의 onLayout 안에 있어야합니까?

CustomView cust = new CustomView(context); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
cust.setLayoutParams(params); 

MeasureSpec을 설정하려면 여기에 다른 규칙으로 추가해야합니까?

3) CustomView 인스턴스를 만들고 CustomViewGroup 코드에서 CustomViewGroup에 추가해도됩니까? 그렇다면이 코드를 CustomViewGroup 생성자에 넣어야합니까? 그렇지 않다면 ViewGroups를 만든 다음 다른 외부 클래스의 자식을 모두 추가한다고 이해하고 있습니까?

4) CustomViewGroup의 onDraw() 메서드 내에서 각각의 childviews에 대해 draw()를 호출하는 것이 일반적입니까?

지금은 원을 그리는 코드를 실행할 때 그리기 방법을 실행하지만 화면에 아무 것도 실제로 표시되지 않습니다. 내 customViewGroup 대신 relativeLayout에 추가 할 때 아무런 문제가 없습니다. 그래서 뷰 ​​그룹을 표시하는 방법에 대한 핵심 요소가 누락 된 것 같습니다. (예, ContentGroup을 ViewGroup으로 설정했습니다.)

미리 감사드립니다.

편집 : 제발 보여주지 마십시오 XML, 나는 자바로이 모든 것을하고 있습니다.

+1

8 개의 개별 질문 또는 더 적은 수의 더 자세한 대상 질문으로 분류 할 수 있습니다. –

답변

14

slides을 읽고이를 video으로 보시기 바랍니다.

+0

flowLayout 클래스는 많은 도움이되었습니다! – AMerle

+0

사용자 정의 레이아웃 (ViewGroup 확장)에 관심이있는 사용자는 해당 슬라이드를 사용합니다. 나는 그 슬라이드의 저자를 고려하여 이전 Google IO에 게재 된 것으로 믿습니다. 링크를 가져 주셔서 감사합니다. 귀중한 자원 – Armando

관련 문제