ListView解决嵌套冲突

经常写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);
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值