码迷,mamicode.com
首页 > 移动开发 > 详细

Android ListView 和 ScrollView 冲突问题

时间:2015-07-19 15:06:19      阅读:201      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!