2012-08-11 4 views
1

나는 추상 클래스 ViewGroup을 확장하여 사용자 정의 레이아웃 Android 구성 요소를 만듭니다 (Parleys.com의 Romain Guy가 제공 한 비디오 자습서 : http://www.parleys.com/#st=5&id=2191&sl=1).강제 사용자 정의 ViewGroup 하위 유형 및 개수

내 구성 요소에는 하위가 있어야하지만 하위 그룹은 ViewGroup 유형 (예 : 다른 LinearLayout 또는 RelativeLayout)으로 제한됩니다. Kindof는 ScrollView와 같습니다. 제한을 추가 할 수있는 방법이 있습니까?

편집 : 당신이 할 수있는

@Override 
public void onFinishInflate() 
{ 
    if (getChildCount() > 1) 
     throw new IllegalArgumentException("Only 1 child allowed"); 

    if (getChildCount() == 0 || !(getChildAt(0) instanceof ViewGroup)) 
     throw new IllegalArgumentException("Child must be a ViewGroup"); 
} 
+0

는 의미 적, 내가'IllegalStateException'이 IllegalArgumentException''보다 더 적합 할 것이라고 생각 사용할 수 있습니다. 그러나 쉬운 웹 검색을위한 감사. –

+0

또한 View 클래스의 문서에는 현재 아무것도 수행하지 않더라도 수퍼 클래스 구현 ('super.onFinishInflate()') 호출을 요구하는 정책이 포함되어 있습니다 (http : /developer.android.com/reference/android/view/View.html#onFinishInflate%28%29 –

답변

2

확인 : 안드로이드 개발자로 최종 솔루션, 프로그램 등 onFinishInflate 뷰 그룹 서브 클래스의 제약 조건을 확인하는 것입니다 말했다.

자식이 하나만 있는지 확인하려면 getChildCount()을 사용하여 자식 수를 가져옵니다.

그런 다음 getChildAt(0)을 사용하여 viewGroup에있는 유일한 자식을 가져옵니다. 이 후

이 결과에 반사를 사용하고 해당 클래스에서 수행 할 별도의 어떤 검사 할 (예를 들어, getSuperclass()

+0

코드에서가 아니라 XML에서이 작업이 필요합니다. ScrollView 구성 요소와 마찬가지입니다. –

+0

.xml에서 중요하지 않습니다. , 당신은 (보통)보기 만 사용합니다. 코드, 당신은 그 논리를 작성합니다 .ScrollView도 코드를 가지고 있습니다. –

+0

이 예제를보십시오 : XML 레이아웃에서, 사용자 정의 ViewGroup을 추가하고 그것에 2 명의 아이들을 추가하려고하면 컴파일러에서 불평을 원합니다. ScrollView와 같습니다. 이것이 가능한가? –

관련 문제