2012-01-14 1 views
2

여러 개의 하위보기 (TextViews, ImageViews 등)가 포함 된 'myview.xml'이라는 XML 레이아웃 파일에 RelativeLayout이 정의되어 있습니다.xml 레이아웃 파일에서 사용자 정의보기 클래스를 만드는 가장 좋은 방법은 무엇입니까?

이 RelativeLayout을 나타내는 'MyView'라는 View 객체/클래스를 만들고 싶습니다.이 객체는 내가 정의 할 메소드를 사용하여 하위보기의 속성을 변경할 수있게 해주고 인스턴스를 추가 및 검색 할 수있게합니다 MyView를 프로그래밍 방식으로 (다른 뷰로) 가져올 수 있습니다.

가장 좋은 방법은 무엇입니까? 순간 나는이 작동하지만, 내 모든 RelativeLayouts이 포함되어 의미 ... FrameLayout이를 확장하고 나는 다음과 같은 방법을 호출 FrameLayout이의 세 가지 생성자를 오버라이드 (override)에서 'MYVIEW'라는 이름의 클래스 ...

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.myview, null); 
addView(view); 

을 만드는 오전 FrameLayouts 따라서 내 뷰 계층 구조에 여분의 (불필요한) 레이어가 있습니다 ...

답변

2

나는 거의 같은 일을합니다. 하지만 null 대신 'this'를 보내고 부모보기에 해당보기를 추가하지 마십시오.

LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
inflater.inflate(R.layout.myview, this); 
+0

감사합니다. Mad Mik. 만약 내가'inflate' 메소드를 올바르게 이해했다면, 뷰 계층 구조에 여분의 레이어가 있음을 의미하지만, 내가 그것을하고있을 때 혼자가 아니라는 것을 알면 기쁘다. 그리고 당신의 방법은 메소드 호출이 하나 적다. 그걸로가! :) –

+0

예. 당신은 여전히 ​​아이들처럼 부 풀린 견해로 끝납니다. – madmik3

관련 문제