不说废话,直接上代码,实现功能看标题
//获取adapter
ListAdapter listAdapter = listview.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listview); //获取子view
//设置子view的大小与父布局无关,这里容易报错后面说
listItem.measure(0, 0);
//累加计算总高度
totalHeight += listItem.getMeasuredHeight();
}
//下面是设置listview的高度
ViewGroup.LayoutParams params = listview.getLayoutParams();
params.height = totalHeight + (listview.getDividerHeight() * (listAdapter.getCount() - 1));
((MarginLayoutParams)params).setMargins(10, 10, 10, 10);
listview.setLayoutParams(params);
listItem.measure(0, 0); 这里容易报NullPointerException异常
是因为在adapter的getView中
convertView = LayoutInflater.from(context).inflate(R.layout.XXX, null);
这里第二个参数如果传null就会出现上面空指针的异常。
改为:
convertView = LayoutInflater.from(context).inflate(
R.layout.XXX, parent, false);
即可,注意第三个参数false必须要传不然会报
java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
分享到:
相关推荐
尽管上述方法能够在技术上解决`ListView`与`ScrollView`嵌套时的滚动冲突问题,但在用户体验方面,这种设计通常被视为不佳。理想的设计应当避免在`ScrollView`中直接嵌套`ListView`,而是采用分层的界面设计策略,...
2. **设置ScrollView的高度**:将ScrollView的高度设置为一个具体的值,确保它只显示一个ListView项,这样用户在滑动ScrollView时实际是在滑动ListView。但这可能会影响界面设计的灵活性。 3. **使用 ...
很多朋友因项目需求问题需要在ScrollView中...在此个大家分享一种一个案例源代码能够很随意的解决ScrollView与ListView、ScrollView与ScrollView的嵌套滑动的问题,个人亲手测试200%达到你预期的目的!希望能帮到大家!
自定义的一个ListView,在布局的时候使用,可以解决ListView和ScrollView冲突问题
2. **自定义ListView**:重写ListView的onMeasure()方法,让其高度适应内容高度,这样ScrollView就不会试图对其进行滚动。 3. **避免嵌套**:尽量避免在同一个布局中同时使用ListView和ScrollView。如果内容可以被...
这样,ListView会根据自己的内容动态调整高度,从而避免与ScrollView的冲突。 2. **设置ListView的动态高度**:在布局XML中,将ListView的高度设置为WRAP_CONTENT。然后,在代码中,通过计算ListView的总高度来设置...
在Android开发中,ListView和ScrollView是两种常用的布局控件,分别用于展示可滚动的列表视图和可滚动的内容视图。本主题将深入探讨如何在ListView或ScrollView中动态改变Headerview的透明度以及实现显示或隐藏的...
这主要是因为ScrollView会尝试包含所有的子视图,而ListView内部已经处理了自身的滚动逻辑,所以ScrollView会误认为ListView只有一个高度(即一个条目高度),而不是所有条目的总高度。这就导致了ListView只能显示一...
然而,当ListView需要与ScrollView嵌套使用时,可能会遇到一些问题,特别是不能正常刷新。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解为什么ListView嵌套ScrollView会导致刷新问题。ListView自身...
当ListView被ScrollView包裹时,ListView的滚动会被ScrollView接管,导致ListView的滚动优化机制失效,可能会造成卡顿或滚动不顺畅。 为了解决这个问题,我们需要自定义一个ListView,让它能在ScrollView内正常工作...
例如,当ScrollView滑动到底部时,可以禁用其滚动,让ListView继续接收触摸事件。 7. **使用Headerview和Footerview**: 如果只是想在ListView上方或下方添加可滚动的内容,可以使用ListView的Headerview和...
2. **自定义布局**:创建一个自定义的ScrollView,重写其`onInterceptTouchEvent`和`onTouchEvent`方法,当检测到ListView需要滚动时,将触摸事件传递给ListView。同样,ListView也需要相应地调整事件处理逻辑。 3....
6. **计算预估高度**:为了避免ListView在ScrollView中占用过多空间,可以计算ListView的高度并设置一个固定值。这样,ScrollView只需要滚动到固定高度,而不是根据ListView的内容高度。 总的来说,实现"嵌套...
当ListView被包含在ScrollView中时,由于ScrollView并不了解ListView的复用机制,它会尝试处理整个ListView的滚动,这就会导致滚动体验变得混乱,有时甚至完全失效。 解决这个问题的一种常见方法是自定义一个继承自...
本文将详细讲解如何解决多个ListView与ScrollView滑动冲突的简单处理方法。 首先,理解冲突的本质:ScrollView是一个可以容纳多个View的容器,它可以垂直滚动。而ListView本身就是可滚动的列表,内部已经处理了滑动...
在一些项目中需要用到listview嵌套在scrollview中的情况,但会碰到焦点冲突,scrollview焦点覆盖listview造成listview不能滑动,这种情况时要在scrollview中添加android:fillViewport="true"这句,并在listview中...
自定义scrollview,支持嵌套listview的scrollview;(需要动态设置listview的高度)
然而,在实际应用中,当ListView被嵌套在ScrollView或者与ScrollView并存时,常常会出现事件冲突的问题,导致ListView的滚动功能失效或者ScrollView无法正常工作。下面我们将深入探讨这个问题,并提供解决方案。 ...
本篇文章将深入探讨如何解决ScrollView与ListView的嵌套问题,并通过自定义ListView来实现正常显示每个Item,确保滑动操作由ScrollView有效控制。 首先,我们需要理解ScrollView和ListView的工作原理。ScrollView是...
然而,当ListView内部需要展示的内容高度超过一屏时,单纯使用ListView无法实现滚动查看全部内容的效果,这时就需要结合ScrollView来实现整体的滚动功能。 整合ListView和ScrollView的一种常见方法是使用...