关于scrollview和listview嵌套的高度问题,涉及到listview中有自定义组件,高度计算不准确

wiz_Chen wiz_Chen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
百度google了很久,发现关于scrollview和listview嵌套时,总是不能计算listview高度这个问题现在都流行这两种做法
1:在自定义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);
}

2:在listview设定自定义adapter后计算每项adapter的高度,然后计算总的高度再设置:
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);
// int desiredWidth= View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.AT_MOST);
listItem.measure(0, 0); // 计算子项View 的宽高
totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}


目前这两种方案是比较流行的.但是我今天遇到一个问题,项目上必须用scrollview嵌套listview实现,但是我的listview的每个item中或许会存在自定义组件(是LinearLayout),本人的理解是以上两种方案都不能计算到这个自定义组件的高度,所以一直会有部分listview内容不能看到,各位有什么好的解决方案,小生在这里先谢过了!
...全文

相关推荐

ScrollView嵌套ListView,解决显示不全的问题

ScrollView嵌套ListView,解决显示不全的问题

SeanMis小七

解决ScrollView嵌套ListView下拉刷新问题的完整方案

在Android开发中,为了实现复杂的UI布局效果,开发者常常需要将ListView嵌套在ScrollView中以达到整体可滑动的视觉体验。然而,这种嵌套结构会引发一系列严重的问题,最典型的就是滑动冲突、列表项显示不全以及性能下降等现象。由于ScrollView和ListView都继承自ViewGroup并具备自身的滚动机制,当两者叠加时,父容器ScrollView会拦截子控件ListView的触摸事件,导致ListView无法正常响应上下滑动操作,造成用户交互体验的断裂。

AAAsuan

解决scrollview嵌套listview显示不全的四种方法

重新测量listview高度,或者自定义listview

Cold_warm

Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题

今天小编就为大家分享一篇关于Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

weixin_38538472

Scrollview中嵌套ViewPager和ListView常出现的问题

Scrollview中嵌套ViewPager和ListView常出现的问题: ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕上 ListView同ViewPager类似,必须指定固定高度之后,才可以显示相应的高度,否则只显示一个Item的内容高度,然后在ListView区域上下滑动时,Scrollview并没有效果,而是实现的是ListView的上下滚动事件。

iblade
评论 15
收藏 已收藏
分享
返回顶部
wiz_Chen
Android 80,489 成员 91,375 内容