ListView与ScrollView冲突解决三种方法

来源:互联网 发布:自学广告设计软件 编辑:程序博客网 时间:2024/05/24 05:58

1.ScrollView中添加一属性 android:fillViewport=true,这样就可以让ListView全屏显示了


2.指定ListView的高度 android:layout_height=”XXXdip” ;(XXX指你认为足够大的宽度).

 不过,有些人想要把ListView的宽度随着列的不同而不同。

解决方法:

 private void setListViewHeight(ListViewlistView) {

      //获取ListView对应的Adapter

 ListAdapter listAdapter = listView.getAdapter();

  if(listAdapter == null) {

        return;

  }

 

  inttotalHeight = 0;

  for(int i = 0, len = listAdapter.getCount(); i < len; 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);

}

 

3.不要分发touchevent事件