Android ScrollView与ListView冲突解决_ScrollView内嵌套ListView时禁止ListView的滚动
2014-10-15 14:06:46  By: dwtedx

今天在做项目的时候、遇到一个问题、那就是使用了ScrollView内嵌套ListView

ScrollView内嵌套ListView时不知道为什么ListView高度很小只能显示一行数据

网上有说是因为ScrollView和ListView之间冲突导致的

禁止ListView的滚动事件时可以解决该问题、只让ScrollView可以滚动

解决方法是自定义ListView、xml布局文件中使用该自定义的ListView

public class NotScrollListview extends ListView{
  
	public NoScrollListview(Context context, AttributeSet attrs) {
			super(context, attrs);  
	}  
	  
	//设置不滚动 
	public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
	{  
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
						MeasureSpec.AT_MOST);  
		super.onMeasure(widthMeasureSpec, expandSpec);  

	}
  
}
重写这个方法之后、这样就可以解决ScrollView内嵌套ListView的冲突了

优点是完全解决了ScrollView嵌套ListView的问题、同时代码较少、你甚至可以直接使用LinearLayout

而在Activity中手动为LinearLayout添加子项控件、不过需要注意的是、在添加前需要调用其removeAllViews的方法

否则可能会出现预想不到的事情、那时你会想念天国的ListView的、缺点不是很明显、但还是有两个

一是使用的不是系统控件、不能在xml布局的Graphical Layout视图中直接看到效果

二是不能向ListView那样可以使用ViewHolder结构、在加载大量子项时会费很多时间在findViewById中

如果你的列表数据比较少的话、不妨试试这个方法

除了不能使用ViewHolder结构、使用方法几乎和ListView一样

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+