본문 바로가기

안드로이드 스튜디오

[안드로이드 스튜디오] Caused by: java.lang.IllegalStateException: HorizontalScrollView can host only one direct child 해결

728x90
반응형

 

 

HorizontalScrollView 아래 ChipGroup을 만들어 Chip을 하나씩 추가하여서 만드는 도중

 

 

 

 

 

 

 

 

 

Caused by: java.lang.IllegalStateException: HorizontalScrollView can host only one direct child Error 발생

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

에러 원인이 Binding 쪽에 발생해서 처음에는 바인딩 초기화 오류인 줄 알았다. 

 

 

 

하지만 확인 결과 바인딩 오류는 아니었고, HorizontalScrollView의 화면 구성 방식에 대해 오류가 났던 것이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HorizontalScrollView는 하나의 자식만 존재해야 하는데 여러개의 화면이 있을 경우에 만나는 오류이다. (ScrollView의 특성)

 

 

 

 

 

 

 

 

 

 

-> 해결 방법 : 하위 뷰들을 LinearLayout으로 감싸준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Before

<HorizontalScrollView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent">

    <com.google.android.material.chip.ChipGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.google.android.material.chip.Chip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <com.google.android.material.chip.Chip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</HorizontalScrollView>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

After

- LinearLayout으로 하위 뷰를 감싸줌!

<HorizontalScrollView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        
        <com.google.android.material.chip.ChipGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <com.google.android.material.chip.Chip
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <com.google.android.material.chip.Chip
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>
</HorizontalScrollView>
728x90
반응형