ViewUtil.java
2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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);
}
}