经常写ListView会有嵌套冲突,解决办法有两个,自定义ListView,在onMeasure()方法写上下面的代码
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
如果不是自定义的话,可以调用下面的方法,传入要设置的Listview
/**
*
* @描述: 解决嵌套冲突
* @作者: Android - yhq
* @创建日期: 2016年4月12日 下午3:47:06
*/
public static void setListViewHeight(ListView fragLv) {
// 获得ListView的适配器
ListAdapter adapter = fragLv.getAdapter();
if (adapter == null)
return;
int height = 0;
for (int i = 0; i < adapter.getCount(); i++) {
// 拿到Item
View listViewItem = adapter.getView(i, null, fragLv);
// 计算宽高
listViewItem.measure(0, 0);
// 叠加没一个子项的宽高
height += listViewItem.getMeasuredHeight();
}
// 设置高度
ViewGroup.LayoutParams params = fragLv.getLayoutParams();
// Item的高度乘以分割线的高度
params.height = height + ((fragLv.getDividerHeight()) * (adapter.getCount() - 1));
fragLv.setLayoutParams(params);
}