`
shirlly
  • 浏览: 1647585 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

ScrollView嵌套ListView或ListView嵌套ListView滚动条问题-(正确计算Listview的高度)

 
阅读更多
最近做项目中用到ScrollView和ListView一起使用的问题,显示的时候ListView不能完全正确的显示
首先,ListView不能直接用,要自定义一个,然后重写onMeasure()方法:
public class MyListView extends ListView {

	public MyListView(Context context, AttributeSet attrs)
	{
		super(context, attrs); 
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
	{
		 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  
		            MeasureSpec.AT_MOST);   
		super.onMeasure(widthMeasureSpec, expandSpec);
	}
}

第二步:写个计算listView每个Item的方法
public void setListViewHeightBasedOnChildren(ListView listView) {

  // 获取ListView对应的Adapter

  ListAdapter 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);

   listItem.measure(0, 0); // 计算子项View 的宽高

   totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度

  }

  ViewGroup.LayoutParams params = listView.getLayoutParams();

  params.height = totalHeight
    + (listView.getDividerHeight() * (listAdapter.getCount() - 1));

  // listView.getDividerHeight()获取子项间分隔符占用的高度

  // params.height最后得到整个ListView完整显示需要的高度

  listView.setLayoutParams(params);

 }

第三步:listview添加适配器后设置高度即可
listView.setAdapter(adapter);  
new ListViewUtil().setListViewHeightBasedOnChildren(listView);  

详细出处参考:http://www.jb51.net/article/37202.htm
分享到:
评论

相关推荐

    解决Scrollview嵌套listview下拉刷新的一些问题

    当在一个ScrollView中嵌套一个ListView时,可能会遇到一些特定的问题,尤其是在实现下拉刷新功能时。本文将深入探讨这些问题及其解决方案。 ### 问题1:滑动冲突 由于ScrollView和ListView都具有滚动功能,它们之间...

    Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多

    然而,由于ScrollView自身并不支持滚动事件的监听,因此当我们在ScrollView中嵌套可滚动的组件如ListView或GridView时,可能会遇到滚动冲突问题。为了解决这个问题,开发者需要手动处理滚动事件,或者选择使用如...

    ScrollView嵌套ListView刷新

    2. **使用Header和Footer**:如果只是想在ListView顶部或底部添加一个固定的ScrollView,可以考虑使用ListView的addHeaderView()和addFooterView()方法,将ScrollView作为头部或尾部添加,这样就不需要嵌套,避免了...

    ScrollView嵌套ListVIew两者之间滑动问题

    4. **使用`HeaderView`或`FooterView`**:有时可以通过在ListView的头部或尾部添加固定高度的视图,模拟ScrollView的效果,但这种方法限制了ScrollView的灵活性。 5. **使用第三方库**:还有一些第三方库,如`...

    ScrollView嵌套listview或gridview

    当ScrollView中嵌套ListView或者GrideView时,listView和GrideView不能完全显示的时候

    经典ScrollView嵌套ListView和ScrollView

    很多朋友因项目需求问题需要在ScrollView中嵌套使用ListView或ScrollView 但是彼此的滑动事件会发生冲突,网上大多数都是计算ListView的高度来解决这个问题,但个人亲手尝试 结果ListView的Item要是过多的话ListView...

    解决ScrollView嵌套ListView Demo

    通过上述方式,我们可以有效地解决ScrollView嵌套ListView的滚动冲突问题,使得两者能够协同工作,提供良好的用户体验。在"demo"项目中,你可以找到一个实际的应用示例,通过运行和调试,更深入地理解这个解决方案的...

    ScrollView嵌套Listview重新测量Listview高度

    在提供的`ListViewMeasureDemo`项目中,开发者可能已经实现了这些步骤,通过代码示例展示了如何解决ScrollView嵌套ListView时的高度计算问题。你可以通过查看该项目的代码,学习如何在实际开发中应用这种方法。 总...

    Android中自定义ListView,解决scrollview嵌套listview 滑动事件冲突

    1. **使用NestedScrollView替代ScrollView**:NestedScrollView是Android Support Library中的一个组件,它内置了对嵌套滑动的支持,能很好地处理嵌套在其中的ListView或RecyclerView的滑动事件。 2. **自定义...

    ScrollView嵌套ViewPager和ListView

    ScrollView嵌套ViewPager,ViewPager横向滑动时容易上下滚动处理;...ScrollView嵌套ListView,ListView滚动事件处理,可滚动; ScrollView子控件获取焦点后自动置顶问题处理。 ListView滚动到顶或到底事件监听。

    四种方法解决ScrollView嵌套Listview

    在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但也是一个挑战,因为它们都是滚动视图,直接组合可能导致冲突和不可预期的行为。本篇文章将详细介绍四种解决ScrollView嵌套ListView问题的方法,...

    scrollview嵌套listview冲突解决

    当在一个ScrollView中嵌套一个ListView时,可能会遇到一些问题,比如ListView显示不全或者只显示一个条目。这些问题通常由于两者的滚动机制冲突导致,因为两者都具有滚动功能,系统可能无法正确处理它们之间的交互。...

    解决scrollview嵌套listview的冲突问题

    用于解决scrollview组件嵌套listview组件时候 两者之间的冲突问题

    ScrollView嵌套ListView,解决显示不全的问题

    3. **自定义ListView**:创建一个自定义的ListView,重写onMeasure()方法,使其返回精确的高度,这样ScrollView就能正确计算出内容的高度。但这需要对测量和布局流程有深入理解,对初学者来说可能有些复杂。 4. **...

    ScrollView,嵌套ListView,ListView并同时嵌套GridView

    总之,嵌套ScrollView、ListView和GridView需要开发者对Android视图系统有深入理解,合理使用这些组件可以创建出复杂而功能丰富的用户界面,但同时也需要妥善处理可能出现的滚动冲突和性能问题。在实际项目中,应该...

    解决ScrollView嵌套ListView问题的几种方案

    然而,当在一个ScrollView中嵌套一个ListView时,会遇到一系列的问题,主要是由于两者都具有滚动功能,导致冲突,用户体验受到影响。本文将探讨几种解决这种问题的方案。 ### 方案一:使用NestedScrollView替代...

    android scrollview嵌套listview

    4. **限制ListView的高度**:给ListView设置一个合适的高度,以防止其占用整个ScrollView的空间,可以通过计算数据数量和行高来动态设置。 5. **使用RecyclerView替换ListView**:RecyclerView是Android Lollipop及...

    ScrollView嵌套ListView滑动冲突的解决方法

    当需要在一个界面中同时展示大量数据和一些额外内容时,可能会将ListView嵌套在ScrollView中,但这种做法往往会导致滑动冲突的问题,即用户难以确定是想滚动整个ScrollView还是单独滑动ListView。本文将深入探讨这个...

    解决scrollview嵌套listview显示不全的四种方法

    总结来说,解决ScrollView嵌套ListView显示不全的问题,可以通过重写ListView的`onMeasure`方法、设置ScrollView的`fillViewport`属性、使用LinearLayout或NestedScrollView,以及用RecyclerView替换ListView。...

    Android scrollview嵌套listview

    这时,可以监听ScrollView的滚动事件,根据滚动位置动态调整ListView的可见性或滚动状态。 6. 使用ViewStub:如果ListView中的数据项数量较少,可以考虑使用ViewStub。ViewStub是一种轻量级的视图,初始时不占用...

Global site tag (gtag.js) - Google Analytics