博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ListView 和 ScrollView 冲突问题
阅读量:5944 次
发布时间:2019-06-19

本文共 1245 字,大约阅读时间需要 4 分钟。

近期做一款APP,当中有一个类似微博的评论功能的界面,先是列出微博的正文内容和图片等。然后下边是评论。

一開始就想着用一个ScrollView把主要内容和评论区的ListView包起来。然后加入各个控件的内容就可以(对,感觉上有点像这个CSDN博客的编辑界面嘛),可是写出来之后发现ListView仅仅显示出了一个条目的高度。并且不能滑动,网上搜了一下发现原因是ScrollView和ListView都是可滑动的,把它们放在一块会有冲突。最后还是ScrollView获得了焦点。ListView不能滑动。网上的解决方法最多的是在载入ListView时用getMeasure计算每一个条目和切割线的高度,然后相加,把结果设置为ListView控件的高度,只是貌似是仅仅适用于ListView每一个条目高度都一样的情况(没有试过。非常奇怪为什么会这样)。要么就是自己定义一个继承自ListView的控件,也是事先设置好ListView的高度。但这样总归比較麻烦。并且精确度不如由系统自己构造好。

懒癌发作实在不想自己去做这些事情,于是便想试一下比較投机的方法,就是在ListView的Adapter的getView方法中依据position构造不同的界面,即假设position是0,则用原来主要信息(微博正文,图片)的xml文件取inflate convertView,否则就用评论条目的xml去inflate,经试验果然可行。之后不死心想看下有没有更好的实现方法。去overflow上找了一下,发现有人推荐的方法和我的几乎相同。所以觉得这样的方法是比較好的,不须要做额外的工作,仅仅须要把inflate的工作由主Activity放在Adapter里就能够了。

getView方法

@Overridepublic View getView(int position, View convertView, ViewGroup parent){	/*主信息界面*/	if(0 == position)	{		MainHolder holder = null;		convertView = inflater.inflate(R.layout.info, parent, false);		holder = new MainHolder();		convertView.setTag(holder);                ······                ······	}	/*评论界面*/	else	{		ItemHolder holder = null;		convertView = inflater.inflate(R.layout.item, parent, false);		holder = new ItemHolder();		convertView.setTag(holder);		······		······		return convertView;	}}

转载地址:http://edwxx.baihongyu.com/

你可能感兴趣的文章
无线通信
查看>>
JSONPlaceholder使用
查看>>
java连接redis无法连接,报异常RedisConnectionException
查看>>
【luogu 3375】【模板】KMP字符串匹配
查看>>
MRI原理谁都看得懂版
查看>>
微软面试题 博弈论 经典案例 (参考答案)
查看>>
机器智能公司一览图 | 36氪
查看>>
ByteArrayOutputStream用法
查看>>
计算机操作原理进程调度算法---先来先服务,短进程优先(C语言)
查看>>
phantomjs学习资料
查看>>
Python 如何计算当前时间减少或增加一个月
查看>>
古老的SSM企业级应用
查看>>
saltstack之(二)软件包下载安装
查看>>
环境搭建实录一
查看>>
痞子衡嵌入式:第一本Git命令教程(7.1)- 清理之缓存(stash)
查看>>
素数表
查看>>
[转载]OBJECTIVE C (XCODE) 绘图功能简介
查看>>
Yii2.0 连接数据库
查看>>
013_RomanToInteger
查看>>
使用极光推送实现分组发送和服务端集成
查看>>