IT/Android
[Android]리스트뷰(ListView) 자동 너비(auto Weight)설정
Kanzler
2016. 8. 19. 07:00
리스트뷰를 쓰다보면 아이템의 길이에 따라 너비를 조절 해야 경우가 있습니다. 쉽게 해당 리스트뷰에 android:layout_width="wrap_content" 를 사용 하면 해결 될 것 같지만 실제 컴파일후 실행을 해보면 원하는 형태로 처리 되지 않는 것을 확인 할 수 있습니다. 이런 경우 유용하게 사용 될 수 있는 코드가 바로 리스트뷰에 아이템에 따라 리스트뷰의 너비를 조절 해주는 아래의 소스 코드 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static int getWidestView(Context context, Adapter adapter) { int maxWidth = 0; View view = null; FrameLayout fakeParent = new FrameLayout(context); for (int i=0, count=adapter.getCount(); i<count; i++) { view = adapter.getView(i, view, fakeParent); view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); int width = view.getMeasuredWidth(); if (width > maxWidth) { maxWidth = width; } } return maxWidth; } | cs |
사용법은 간단하게 너비를 조절할 리스트뷰의 높이를 설정 해주면 됩니다.
1 | listView.getLayoutParams().width = (int) (getWidestView(mContext, adapter)*1.3); | cs |