안드로이드 7 누가

wp-1473801826911.png

새벽에 잠이 깨서 핸드폰(넥서스 5X)을 보니 업데이트가 있네요.

시큰둥하고 보는데 엄청난 크기, 자세히 보니

멀티윈도우로 멀티태스킹이라니~~~~

배터리 수명마저 길어지나다니~~~

무조건 설치!!

 

오 멀티 잘됨.

wp-1473806023649.png

배터리도 아껴준다하고

상단바도 내 맘대로 된다하고

데이터도 아낄수 있다하니

레퍼런스 폰, 사랑하지 않을 수 없다.

 

ListView in ScrollView

Screenshot_2016-04-11-14-45-09

ScrollView 안에 ListView를 넣으니 하나의 ListItem 크기 만큼만 나옵니다.

조사를 해보니 여러가지 방안들을 알려줍니다.

그 중 ListItem의 랜더링 후 높이를 알아내어 ListItem 개수 만큼 곱해서 ListView의 높이를 설정해 주는 것이 가장 적절해 보였습니다.

하지만 실제 ListItem 하나를 가져와 measure 메서드를 사용해 받아온 높이는 사용하기에 적절하지 않았고 일정한 수치를 더해서 크기를 맞춰야 했습니다.

그렇게 확인한 높이를 디버그를 통해 일치하는 값을 갖고 있는 필드를 찾아보니 있었습니다.

그래서 다음과 같이 간단하게 하나의 ListItem의 높이를 가져와서 개수 만큼 곱하고 여기에 디바이더 높이를 계산해 넣으니 정확한 ListView의 높이가 나왔습니다.

 

//ScrollView 안의 ListView 고정높이 적용
View listItem = adapter.getView(0, null, mListView);
int totalHeight = listItem.getLayoutParams().height * adapter.getCount();

ViewGroup.LayoutParams params = mListView.getLayoutParams();
params.height = totalHeight + (mListView.getDividerHeight() * (adapter.getCount() - 1));
mListView.setLayoutParams(params);
mListView.requestLayout();

 

더불어 이 ListView를 LinearLayout에 넣어 ScrollView로 싸고

LinearLayout에 배경색을 넣어보니 아래쪽 빈 곳이 생깁니다.

ScrollView에 android:fillViewport=”true” 를 넣으니 가득 채워주네요. [참조]