源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ScrollView与ListView合用(正确计算Listview的高度)的问题解决

  • 时间:2021-05-16 23:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ScrollView与ListView合用(正确计算Listview的高度)的问题解决
首先,ListView不能直接用,要自定义一个,然后重写onMeasure()方法:
[u]复制代码[/u] 代码如下:
@Override  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {      int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,              MeasureSpec.AT_MOST);      super.onMeasure(widthMeasureSpec, expandSpec);  } 
第二步:写个计算listView每个Item的方法:
[u]复制代码[/u] 代码如下:
public void setListViewHeightBasedOnChildren(ListView listView) {   // 获取ListView对应的Adapter   ListAdapter listAdapter = listView.getAdapter();   if (listAdapter == null) {    return;   }   int totalHeight = 0;   for (int i = 0; i < listAdapter.getCount(); i++) { // listAdapter.getCount()返回数据项的数目    View listItem = listAdapter.getView(i, null, listView);    listItem.measure(0, 0); // 计算子项View 的宽高    totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度   }   ViewGroup.LayoutParams params = listView.getLayoutParams();   params.height = totalHeight     + (listView.getDividerHeight() * (listAdapter.getCount() - 1));   // listView.getDividerHeight()获取子项间分隔符占用的高度   // params.height最后得到整个ListView完整显示需要的高度   listView.setLayoutParams(params);  }
第三步:listview添加适配器后设置高度即可:
[u]复制代码[/u] 代码如下:
listView.setAdapter(adapter);  new ListViewUtil().setListViewHeightBasedOnChildren(listView); 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部