标签:android listview scrollview 冲突
最近做一款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方法
@Override public 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; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
Android ListView 和 ScrollView 冲突问题
标签:android listview scrollview 冲突
原文地址:http://blog.csdn.net/u013687632/article/details/46954045