使用滚动条容易带来一个后果,就是高度和宽度不受控制了,
之前就遇到一个已经有ScrollView的页面需要加个列表listView,然后就发现listView只看到前两行数据,下面的看不到,拉滚动条也只是滚动整个页面,而不是listview。
方法1:让外面的ScollView交出滚动权限,因为listview自身就有滚动条。
方法2:通过计算装在内容后的list高度,然后设置高度。
只要在你给你的listView设置适配器后,再重新设置listview的高度,思路是,算出每行的高度,给listview设置高度为:每行的高度*行数+各行间分隔线的高度,即可。
1 public void setListViewHeightBasedOnChildren(ListView listView) {
2 ListAdapter listAdapter = listView.getAdapter();
3 if (listAdapter == null) {
4 return;
5 }
6 int totalHeight = 0;
7 for (int i = 0; i < listAdapter.getCount(); i++) {
8 View listItem = listAdapter.getView(i, null, listView);
9 listItem.measure(0, 0);
10 totalHeight += listItem.getMeasuredHeight();
11 }
12 ViewGroup.LayoutParams params = listView.getLayoutParams();
13 params.height = totalHeight
14 + (listView.getDividerHeight() * (listAdapter.getCount() + 1));
15 listView.setLayoutParams(params);
16 }
传入listview,方法中会改变其参数,设置其高度。0.0