Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 볼륨조절앱
- 볼륨조절어플
- 알림바
- db
- auto_increment 값
- condensed
- crashlytics
- id 얻기
- 디자인패턴
- 역슬레시
- 데이터베이스
- 머터리얼
- android studio
- escape_string
- mariaDB
- 안드로이드 스튜디오
- mysql_insert_id
- 파이썬
- Auto_increment
- 안드로이드
- MySQL
- 안드로이드앱
- soundcontroller
- Android
- 메터리얼
- Query
- Python
- insert_id
- insertion
- last_insert_id
- Today
- 16
- Total
- 92,978
장삼의 착한코딩
[Android] ScrollView안에 ListVIew 넣을 시 Height 문제 본문
ScrollView에 ListView를 넣고 adapter를 통해 item을 넣을 시, ListView의 Height가 제대로 설정되지 않는 경우가 있다. 이럴 땐 Java 코드에서 직접 ListView의 Height를 직접 설정해주어야 한다.
우선 xml 코드는 아래와 같다. ListView의 Height를 wrap_content로 설정해 준다.
1 2 3 4 5 6 7 8 9 10 | <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/ListView" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </ScrollView> | cs |
그 후 아래의 메소드를 작성한다. ListView와 연결되어 있는 adpater의 item의 개수를 통해 ListView의 height를 설정해주는 메소드이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.AT_MOST); for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); } | cs |
그 후 ListView의 Adapter를 설정한 후 setListViewHeightBaseOnchildren 메소드를 실행하여 ListView의 Height를 설정해주면 된다.
1 2 | listView.setAdapter(adapter); setListViewHeightBasedOnChildren(listView); | cs |
'Android' 카테고리의 다른 글
[Android] Sharedpreference (0) | 2015.12.30 |
---|---|
[Android] BroadCast Receiver (0) | 2015.12.16 |
[Android] ScrollView안에 ListVIew 넣을 시 Height 문제 (8) | 2015.11.04 |
[Android] Toolbar 사용하기 (0) | 2015.08.26 |
[Android] 웹 브라우저로 특정 Url 실행하기 (0) | 2015.08.25 |
[Android] 폰트 적용하기 (0) | 2015.08.24 |
8 Comments
-
ㅎㅎ 2016.10.30 12:00 대박이에요.. 완전 도움됐습니다 감사합니다!
-
kks 2016.12.05 09:35 대박입니다!!!!
-
dykim 2016.12.16 15:56 사랑합니다.... 감사합니다..
-
셔 2017.12.12 17:00 안녕하세요
보여주신것 적용이 잘됩니다
허나 문제가 아이템을 삭제하면 스크롤이 줄어들어야 되는데 아이템을 추가시킨 길이만큼 계속 남아있어서 스크롤이 내려갑니다 어떻게 해야되나요?
--> 자답입니다
삭제에도 동일 매소드를 넣어줘야 됬었네요 ㅎㅎㅎ
작동 잘됩니다 감사합니다 -
넷째형 2018.02.22 11:42 안녕하세요
글 잘보았습니다
그런데 리스트뷰에 피카소로 이미지를 로드를 하는경우에는
크기가 제대로 안받아와지는데
이부분에 대해 어떻게 처리해야할지 알 수 있을까요? -
헤헤 2018.04.02 15:53 사랑해
-
실버dev 2019.01.11 00:47 신고 감사합니다
-
윤대현 2020.12.24 11:19 감사합니다
근데 메소드 사용시 주어지는 Height가 실제 리스트보다 훨씬 크게 나오게 되는데 짐작가는 원인이 무엇이 있을까요...
초보라 아직 분석을 잘못하겠네요...