ListView를 이중으로 구성하면 부모에 해당하는 ListView의 높이로 자식 뷰가 고정되는 문제가 있다.
이 때문에 몇 가지 방법이 있겠지만, 그 중 높이를 다시 계산해서 뷰를 뿌려주는 방법이 있다.
아래 코드
ListAdapter adapter = menu.subMenuView.getAdapter();
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, menu.subMenuView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = menu.subMenuView.getLayoutParams();
params.height = totalHeight + (menu.subMenuView.getDividerHeight() * (adapter.getCount() - 1));
menu.subMenuView.setLayoutParams(params);
menu.subMenuView.requestLayout();
간단히 설명하자면 자식 뷰의 어뎁터를 구해서 어뎁터 아이템의 갯수에 따라 높이를 다시 계산하는 방법이다.
좋은 방법이라고는 생각 안하지만... 되도록이면 이중 구성은 안하는게 성능적으로나 모바일 환경에 좋지 않을까 싶다.
댓글