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

리스트뷰에 match_parent값을 줬는데 리스트가 하나밖에 안보입니다.

0 추천

<ScrollView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:id="@+id/scrollView1"
                        android:background="#ffff9494">
                        <LinearLayout
                            android:layout_width="fill_parent"
                            android:layout_height="fill_parent"
                            android:background="#fcfcfc">
                            <!--리스트뷰 높이 재설정-->
                            <ListView
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:id="@+id/listview"
                                android:background="#4aff9494" />

                        </LinearLayout>
                    </ScrollView>

 

 

dp로 주면 전체 리스트가 다 보이는데

저렇게 주면 리스트가 하나밖에 안보입니다. 스크롤로 내려야 나머지가 보입니다.. 하나씩이요.. ㅜ_ㅜ

뭣때문일까요?

꿀로이드 (550 포인트) 님이 2015년 6월 12일 질문
리스트뷰는 자동으로 스크롤이 지원되는데,
왜 굳이 스크롤뷰>리니어레이아웃>리스트뷰 형식으로 한거죠?
그냥 바로 리스트뷰하시면 됩니다.

2개의 답변

+1 추천
 
채택된 답변

스크롤뷰 안에 리스트뷰를 넣는 경우 이중 스크롤 현상으로 말씀하신 현상이 발생됩니다.

이럴떄는 리스뷰의 높이를 강제 할당 해야 합니다.

해결 하셨을지 모르겠지만, 저도 같은 문제로 고민했던 적이 있어 소스를 첨부합니다.

아래와 같이 함수를 정의하시고, 사용법은 listViewHeightSet(사용한 어댑터, 리스트뷰);

설정해주시면 됩니다.

 

private void listViewHeightSet(Adapter listAdapter, ListView listView){
		int totalHeight = 0;
		for (int i = 0; i < listAdapter.getCount(); i++) {
			View listItem = listAdapter.getView(i, null, listView);
			listItem.measure(0, 0);
			totalHeight += listItem.getMeasuredHeight();
		}

		ViewGroup.LayoutParams params = listView.getLayoutParams();
		params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
		listView.setLayoutParams(params);
	}

 

익명사용자 님이 2015년 6월 13일 답변
꿀로이드님이 2015년 6월 13일 채택됨
+1 추천
안녕하세요~

스크롤뷰에 android:fillViewport="true" 이거 한번 넣어보시겠어요??

(또는 코드상에서 scrollView.setFillViewport( true )  ..)

 

감사합니다.
dubudub (930 포인트) 님이 2015년 6월 12일 답변
...