解决ListView显示不全、滑动冲突问题
在开发中,ListView是使用得最多的控件,有时候会遇到ListView因为各种原因引起的数据显示不全,例如,嵌套了ScrollView等。这个解决的办法很多,这里记录一下我自己用过的方法,本人亲测有效。
第一种:
/*** 设置listview高度的方法* @param listView*/
public void setListViewHeight(ListView listView) {//获取ListView对应的AdapterListAdapter 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); //获得每个子item的视图listItem.measure(0, 0); //先判断写入的widthMeasureSpec和heightMeasureSpec是否和当前的值相等,如果不等,重新调用onMeasure(),计算子项View 的宽高totalHeight += listItem.getMeasuredHeight(); //累加不解释,统计所有子项的总高度}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); //加上每个item之间的距离,listView.getDividerHeight()获取子项间分隔符占用的高度listView.setLayoutParams(params);//params.height最后得到整个ListView完整显示需要的高度
}
这个方法需要在ListView.setAdapter(adapter)之后调用,这样就可以把数据显示完全了,这个方法可以写到工具类里面,然后直接调用。
第二种方法:
/**** 設置listview的高度結局滑動衝突* * @param statisticsTO*/public void setListvHeight(StatisticsTO statisticsTO) {int size = statisticsTO.getData().size();int totalHeight = 0;for (int i = 0; i < size; i++) {View listItem = myAdapter.getView(i, null,liststatistics);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = liststatistics.getLayoutParams();params.height = totalHeight+ (liststatistics.getDividerHeight() * (size - 1));liststatistics.setLayoutParams(params);}
这种方法其实和第一种方法是类似的,只不过这里传入的是数据的实体。
第三种方法:
第三种方法就是自定义ListView,然后重写onMeasure方法,这个可以解决ListView的滑动冲突,百度上说的最多的就是这种方法。
public class CustomListView extends ListView{public CustomListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int spec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, spec);
}
}
转载自 :http://blog.csdn.net/u014727709/article/details/76423318
欢迎start,欢迎评论,欢迎指正
解决ListView显示不全、滑动冲突问题相关推荐
- Android开发之解决ListView和ScrollView滑动冲突的方法
我们看下图: 不管怎么滑动都无法显示listview的剩余数据,只能显示一条,我们看下布局,ScrollView里面嵌套ListView <?xml version="1.0" ...
- 【Android 手势冲突】Colin带你彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏(附demo哦)
在新一期的需求中,产品要求我们做出和美团某个页面类似的功能,即一个页面包含在scrollView中,上面一个部分放置一些常用的广告banner.宫格tab等,下面放置一个RecyclerView用于展 ...
- 解决SwipeRefreshLayout与Banner滑动冲突
import android.content.Context; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import ...
- html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 参考文章: (1)html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题 (2)ht ...
- 电脑ping服务器ip显示数据丢失,Win7系统如何测试网络丢包率解决网页显示不全的问题...
Win7系统在上网过程中打开网页经常遇到网页显示不全,或者玩游戏卡顿的现象,但是过一会儿又恢复了.怎么回事呢?可能是因为网络丢包率太高导致的,我们可以Ping一下网络,找到故障原因.那么接下来小编和大 ...
- 解决ScrollView与ViewPage滑动冲突的问题
2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="utf-8"?> ...
- android scrollview listview显示不全
原来处理方法是重写ListView import android.content.Context; import android.util.AttributeSet; import android.v ...
- 使用LinearLayout实现ListView,解决ListView和ScrollView滚动冲突
在项目中,我们常常会遇到一个ScrollView里面会嵌套ListView的情况,但往往你会发现,ListView和ScrollView的滚动时间会有冲突问题,造成ListView不能完全显示.虽然网 ...
- 解决AppBarLayout嵌套WebView滑动冲突的问题
首先,自定义WebView import android.content.Context; import android.util.AttributeSet; import android.view. ...
最新文章
- 用神经网络分类无理数2**0.5和3**0.5
- c# 调用c++DLL方法及注意事项
- 八、深入Go 编程语言接口
- Nginx(四):Nginx配置实战
- Name node is in safe mode解决
- Insta360:从软到硬,一年做出360°全景相机,中间填了多少坑?
- matlab常用函数——软件常用函数
- Linux NULL定义
- 开发原生的 Google 眼镜应用 【已翻译100%】(2/2)
- Java单机部署,Nacos docker单机模式部署实现过程详解
- 【Spark调优】内存模型与参数调优
- java正则表达式验证_Java中的正则表达式电话号码验证
- 《学习的本质》读后感
- ftp服务器21端口无法连接
- Invalid initial heap size: -Xms
- day13_spring环境配置及bean使用
- 病毒木马查杀实战第024篇:MBR病毒之编程解析引导区
- Linux定时器alarm()用法讲解
- 基于Markdown 搭建自己的博客,哪个工具好?
- 数字货币的路在哪里?