美文网首页
ListView与ScrollView冲突解决

ListView与ScrollView冲突解决

作者: Boson_Fang | 来源:发表于2017-06-12 14:54 被阅读0次

最近在设计Android程序时,因为需要在ScrollView中添加一个ListView列表来显示一些信息。刚开始并没有想太多,但添加进去后才发现ListView不论怎样定义都只能显示一行,显示效果很不正常。

后来在网上查了一下才知道,原因是ScrollView和ListView默认都带有滚动条,所以一起使用就会引起冲突。但因为程序中我必须要添加一个ListView,且不想取消外层的ScrollView(想保证用户在程序页面能够上下滑动来浏览更多内容),经过查询找到了解决此问题的方法。

下面记录与分享一下,个人理解该方法的思路大概是这样子的:

根据ListView的子项目来ListView的高度,然后再计算总的ListView高度,然后在setLayoutParams给外面容器。

原代码请参考:

案例:

publicvoidsetListViewHeightBasedOnChildren(ListView list) {参考:http://www.cnblogs.com/colinliu/p/5216435.html

ListAdapter listAdapter = list.getAdapter();

if(listAdapter ==null) {

return;

}

inttotalHeight = 0;

for(inti = 0; i < listAdapter.getCount(); i++) {

View listItem = listAdapter.getView(i,null, list);

listItem.measure(0, 0);

totalHeight += listItem.getMeasuredHeight();

}

ViewGroup.LayoutParamsparams= list.getLayoutParams();

params.height = totalHeight

+ (list.getDividerHeight() * (listAdapter.getCount() - 1));

((MarginLayoutParams)params).setMargins(10, 10, 10, 10);

list.setLayoutParams(params);

}

相关文章

网友评论

      本文标题:ListView与ScrollView冲突解决

      本文链接:https://www.haomeiwen.com/subject/pfplqxtx.html