package com.example.lenovo.jd.util;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.ListView;
public class FixedViewUtil {
/**
* 根据子项目的个数重新设置GridViewHeight col为列数,具体值还是在布局里面设置
* @param gv
* @param col
*/
public static void setGridViewHeightBasedOnChildren(GridView gv,int col) {
* 根据子项目的个数重新设置GridViewHeight col为列数,具体值还是在布局里面设置
* @param gv
* @param col
*/
public static void setGridViewHeightBasedOnChildren(GridView gv,int col) {
ListAdapter listAdapter = gv.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i += col) {
View listItem = listAdapter.getView(i, null, gv);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
totalHeight += gv.getVerticalSpacing();
if (i==listAdapter.getCount()-1) {
totalHeight += gv.getVerticalSpacing();
}
}
LayoutParams params = gv.getLayoutParams();
params.height = totalHeight;
((MarginLayoutParams) params).setMargins(10, 10, 10, 10);
gv.setLayoutParams(params);
}
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i += col) {
View listItem = listAdapter.getView(i, null, gv);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
totalHeight += gv.getVerticalSpacing();
if (i==listAdapter.getCount()-1) {
totalHeight += gv.getVerticalSpacing();
}
}
LayoutParams params = gv.getLayoutParams();
params.height = totalHeight;
((MarginLayoutParams) params).setMargins(10, 10, 10, 10);
gv.setLayoutParams(params);
}
/**
* 根据子项目的个数重新设置ListViewHeight spacing为每个item之间的距离,如果再布局文件当中设置了距离这里就给相对应px值,如果没设置给0就可以
*/
public static void setListViewHeightBasedOnChildren(ListView lv,int spacing){
//1.找到所对应的Adapter
ListAdapter listAdapter = lv.getAdapter();
// 2.最后计算的高度
int listViewHeight = 0;
// 3.获取列表当前的数据
int adaptCount = listAdapter.getCount();
// 4.遍历获取每个item的高度
for(int i=0;i<adaptCount;i++){
View temp = listAdapter.getView(i,null,lv);
temp.measure(0,0);
listViewHeight += temp.getMeasuredHeight();
//加上每一个之间的间距
listViewHeight+=spacing;
}
//5.将计算好的高度重新设置到ListView里面
LayoutParams layoutParams = lv.getLayoutParams();
layoutParams.width = LayoutParams.MATCH_PARENT;
layoutParams.height = listViewHeight;
lv.setLayoutParams(layoutParams);
}
* 根据子项目的个数重新设置ListViewHeight spacing为每个item之间的距离,如果再布局文件当中设置了距离这里就给相对应px值,如果没设置给0就可以
*/
public static void setListViewHeightBasedOnChildren(ListView lv,int spacing){
//1.找到所对应的Adapter
ListAdapter listAdapter = lv.getAdapter();
// 2.最后计算的高度
int listViewHeight = 0;
// 3.获取列表当前的数据
int adaptCount = listAdapter.getCount();
// 4.遍历获取每个item的高度
for(int i=0;i<adaptCount;i++){
View temp = listAdapter.getView(i,null,lv);
temp.measure(0,0);
listViewHeight += temp.getMeasuredHeight();
//加上每一个之间的间距
listViewHeight+=spacing;
}
//5.将计算好的高度重新设置到ListView里面
LayoutParams layoutParams = lv.getLayoutParams();
layoutParams.width = LayoutParams.MATCH_PARENT;
layoutParams.height = listViewHeight;
lv.setLayoutParams(layoutParams);
}
}