ViewUtil.java 2.68 KB
package com.drp.mobliemall.utils;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.ListView;

import com.drp.mobliemall.ui.widget.MyRadioGroup;

/**
 * <p/>
 * <pre>
 * ***************************************************************
 *  Copyright (c) 2014-2015 –苏州犀牛网络科技有限公司
 *  Package: com.drp.mobliemall.utils
 *  Description:
 *  @since 1.0.0
 *  @author 康雷
 *  @date 16/4/20
 *  @time 14:53
 * ***************************************************************
 * </pre>
 */
public class ViewUtil {

    /**
     * 计算listview的高度,使用方法:Utility.setListViewHeightBasedOnChildren(listView);
     *
     * @param listView
     */
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

    /**
     * 根据内容动态设置GridVie
     * @param gridView
     * @param screenWidth
     */
    public static void setGridViewColumns(GridView gridView,int screenWidth){
        ListAdapter listAdapter = gridView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }
        int column = 0;
       // Log.i("ViewUtil","screenWidth="+screenWidth);
        int totalHeight = 0;
        int columnWidth = 0;
        for(int i = 0;i<listAdapter.getCount();i++){
            View listItem = listAdapter.getView(i, null, gridView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
            int currColumnWidth = listItem.getMeasuredWidth()+ Utility.dip2px(14);
            if(columnWidth<currColumnWidth) {
                //列宽加间距
                columnWidth = currColumnWidth;
               // Log.i("ViewUtil", "columnWidth=" + columnWidth);
            }
        }
        if(screenWidth%columnWidth == 0){
            column = screenWidth/columnWidth;
        }else {
            column = screenWidth/columnWidth+1;
        }
        //Log.i("ViewUtil","column="+column);
        gridView.setNumColumns(column);
    }

}