마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

스크롤뷰 내에서 리스트뷰의 아이템이 하나만 보이는 현상..

0 추천

요것때문에 요즘 진도도 더 못나가고 좀 골아프네요..

부스트코스 프로젝트를 진행하면서 공부중인데요, 

앱화면이 길다(?)보니 화면을 스크롤해야하므로 앱전체에 스크롤뷰가 깔려있는 상황입니다.

그래서 스크롤뷰 내에서 나머지 화면을 구성하고 있는데.. 여기안에 리스트뷰를 넣을 일이 생겼습니다.

그런데 리스트뷰를 넣어보니 리스트뷰의 아이템이 하나만 보이는 현상이 생깁니다..

도저히 뭐가 원인인지를 파악을 못하겠는데요.. 어떤 이유 때문일까요?

코드는 이렇습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ListView
                android:id="@+id/listview"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
            </ListView>
       </LinearLayout>
   </ScrollView>
</LinearLayout>

이게 전체 xml코드는 아니고 리스트뷰가 들어있고 부모 레이아웃과 최상위 레이아웃 정도만 표현 했습니다.

나머지는 스크롤뷰 내에 자식LienarLayout 안에 전부다 포함되어있습니다.

리스트뷰를 기준으로 대충 계층구조가 이런식으로 구성이 되어있는데...

어떠한 이유때문인지 아이템이 하나만 보입니다. 어댑터같은 문제는 아닌것이

리스트뷰의 height값을 임의의 값(300dp,500dp 등)으로 줬을시에는 아이템이 그 높이만큼 보이는걸 확인했

습니다. 

혹시 리스트뷰 아래 다른 코드가 가로막고? 있나 싶어서 리스트뷰 아래 존재하는 다른 코드들 지우고 

실행해봐도 결과는 같네요...도와주세요 ㅠㅠ

codeslave (3,940 포인트) 님이 2020년 9월 9일 질문

2개의 답변

0 추천
정확히는 기억 안나지만. LinearLayout의 height가 warp_content인 상황에서 자식의 height가 match_parent인 경우는 논리적으로는 조금 이상하지만 동작은 하는데요. 이때 자식의 높이는 아마도 wrap_content를 기준으로 처리될겁니다. 그리고 ListView의 높이를 wrap_content로 하게 되면 아마도 자식 하나의 높이로 처리될거구요. 기억에 의존한 것이라 확인필요합니다. 어쨌뜬 이런 경우 단순히 xml layout만 가지고 처리하기 어렵습니다.

이런 경우는 NestedScrollView와 RecyclerView를 사용하는게 좋아보이네요.
회색 (21,340 포인트) 님이 2020년 9월 9일 답변
ㅜㅜnestedacrollview 사용해봤지만 안되네요 감사합니다ㅜ
0 추천

ScrollView의 속성 중 android:fillViewport="true" 추가

쭈쭈총각 (17,750 포인트) 님이 2020년 9월 11일 답변
...