티스토리 뷰


리스트뷰를 쓰다보면 아이템의 길이에 따라 너비를 조절 해야 경우가 있습니다. 쉽게 해당 리스트뷰에 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


댓글