`

scrollview 嵌套listview gridview 显示不全

 
阅读更多

.使用网上用的动态改变listview高度的方法,该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。所以使用限制较大。

 

 

public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
//获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter(); 
if (listAdapter == null) {
// pre-condition
return;
}

int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; 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);
}
}

 

 

2.网上有帖子说在ScrollView中添加一属性 android:fillViewport="true" ,这样就可以让ListView全屏显示了。在我机器上测试失败了。

 

3.重写ListView、gridView(推荐):

2.网上有帖子说在ScrollView中添加一属性 android:fillViewport="true" ,这样就可以让ListView全屏显示了。在我机器上测试失败了。

 

3.重写ListView、gridView(推荐): 

/**
 * 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半)
 * @author wangyx
 * @version 1.0.0 2012-9-14
 */
public class MyGridView extends GridView{
	  public MyGridView(Context context, AttributeSet attrs) { 
	        super(context, attrs); 
	    } 
	 
	    public MyGridView(Context context) { 
	        super(context); 
	    } 
	 
	    public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
	        super(context, attrs, defStyle); 
	    } 
	 
	    @Override 
	    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
	 
	        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
	                MeasureSpec.AT_MOST); 
	        super.onMeasure(widthMeasureSpec, expandSpec); 
	    } 
}
public class MyListView extends ListView {

	public MyListView(Context context) {
		// TODO Auto-generated method stub
		super(context);
	}

	public MyListView(Context context, AttributeSet attrs) {
		// TODO Auto-generated method stub
		super(context, attrs);
	}

	public MyListView(Context context, AttributeSet attrs, int defStyle) {
		// TODO Auto-generated method stub
		super(context, attrs, defStyle);
	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		// TODO Auto-generated method stub
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
				MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}
}

   同样适用与重写GridView

/**
 * 自定义gridview,解决ListView中嵌套gridview显示不正常的问题(1行半)
 * @author wangyx
 * @version 1.0.0 2012-9-14
 */
public class MyGridView extends GridView{
	  public MyGridView(Context context, AttributeSet attrs) { 
	        super(context, attrs); 
	    } 
	 
	    public MyGridView(Context context) { 
	        super(context); 
	    } 
	 
	    public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
	        super(context, attrs, defStyle); 
	    } 
	 
	    @Override 
	    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
	 
	        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
	                MeasureSpec.AT_MOST); 
	        super.onMeasure(widthMeasureSpec, expandSpec); 
	    } 
}

  来自:http://yxwang0615.iteye.com/blog/1739187

分享到:
评论
3 楼 zxw136511485 2013-11-08  
我就用的是这种方法,但是还是最后一行显示不全!着急啊!!
2 楼 wt461290528 2013-07-16  
赞!楼主V5O(∩_∩)O哈!
1 楼 wt461290528 2013-07-16  
赞!楼主V5O(∩_∩)O哈!

相关推荐

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

    总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...

    ScrollView嵌套listview或gridview

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

    ScrollView嵌套listView、GridView时滑动冲突

    1、ScrollView嵌套listView、GridView时滑动冲突,自定义 ListView、GridView; 2、自定义ScrollView,解决 当有横向的滑动操作时,与ScrollView上下滑动冲突; 2、横向ListView

    ScrollView嵌套listview(gridview)

    综上所述,ScrollView嵌套ListView或GridView涉及到滚动冲突的处理、性能优化和用户体验的改进等多个方面。开发者需要根据具体需求选择合适的方法,并进行细致的测试以确保应用的稳定性和流畅性。在实际开发中,还...

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

    但是,直接将ScrollView嵌套在ListView或者GridView中会带来问题,因为这可能导致滚动冲突。当ScrollView和ListView/GridView都尝试处理用户的滑动事件时,可能会导致滚动不顺畅或者无法正常滚动。为了解决这个问题...

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

    总的来说,解决ScrollView嵌套ListView问题需要根据具体应用场景选择合适的方法。NestedScrollView、RecyclerView、HeaderView以及自定义ViewGroup都是有效的策略,开发者应根据项目需求和性能考虑来选择最佳方案。...

    scrollView嵌套ListView的下拉刷新和加载更多

    本示例中的"scrollView嵌套ListView的下拉刷新和加载更多"着重解决了这样一个问题:如何在ScrollView中嵌入一个具有下拉刷新和上拉加载功能的ListView,而且不依赖任何第三方库。这通常涉及到自定义滚动事件的处理和...

    Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题

    然而,当ScrollView嵌套ListView或GridView时,常常会遇到内容显示不全的问题。这个问题的主要原因在于ListView和GridView在ScrollView中无法正确测量自身高度,导致它们仅显示一部分数据。 首先,我们需要理解为...

    ScrollView和ListView和GridView冲突解决

    然而,ScrollView不支持动态加载和复用视图,这意味着如果试图将一个包含大量子视图的ListView或GridView放入ScrollView,会导致性能问题和滚动不流畅。 ListView是一种高效的列表展示组件,它通过复用视图...

    ScrollView和ListView和GridView冲突解决之自定义ListView和GridView

    1. **嵌套滚动**:当ScrollView嵌套ListView或GridView时,由于两者都有滚动功能,会导致滚动冲突,即一个组件滚动时,另一个组件也可能跟随滚动。 2. **触摸事件处理**:ScrollView会捕获所有的触摸事件,导致...

    Android_ScrollView与ListView_GridView共存冲突解决方案

    在Android开发过程中,经常会出现需要在一个ScrollView中嵌套ListView或GridView的情况。这种布局方式虽然在视觉上看起来合理,但在实际开发中会遇到一些技术难题。由于ListView和GridView都继承自ScrollView,所以...

    ScrollView ListView和GridView下拉刷新上拉加载更多

    然而,由于ScrollView本身只支持垂直滚动,如果在内部嵌套了其他可滚动的视图(如ListView或GridView),可能会导致滚动冲突。解决这个问题的一个常见方法是使用NestedScrollView,它是Android Support Library中的...

    Android中ScrollView嵌套GridView显示不全解决方法

    Android中ScrollView嵌套GridView显示不全解决方法 由于ScrollView和GridView这两款控件都自带滚动条,一起使用GridView会显示不全 解决方法:自定义gridview 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! ...

    scrollview嵌套问题总汇

    本篇文章将详细探讨“ScrollView嵌套问题总汇”,包括S嵌L(ScrollView嵌套ListView)、S嵌G(ScrollView嵌套GridView)、S嵌S(ScrollView嵌套ScrollView)、H嵌G(HorizontalScrollView嵌套GridView)以及S嵌(H嵌G...

    ScrollView与ListView的滑动冲突

    这类问题通常表现为:当ScrollView内部包含一个ListView或GridView时,用户滑动屏幕时可能无法正常滚动列表中的项,而是整个ScrollView一起滚动,或者出现其它不可预料的行为。下面将详细介绍这种滑动冲突的原因以及...

    ScrollView GradView ListView 嵌套滑动冲突、item内容显示不全

    在Android开发中,嵌套滚动视图是一个常见的需求,但同时也常常伴随着一些技术挑战,比如ScrollView、GridView和ListView之间的滑动冲突以及ListView item内容显示不全的问题。本文将深入探讨这些问题,并提供有效的...

    Android之ScrollView嵌套ListView和GridView冲突的解决方法

    总之,解决ScrollView嵌套ListView或GridView冲突的关键在于正确地重写子类的`onMeasure()`方法,或使用支持嵌套滚动的NestedScrollView。通过这些方法,开发者可以在保持用户体验的同时,解决这种常见的布局问题。

    Android 中ScrollView嵌套GridView.rar_GridView android_android_scrol

    在Android开发中,有时我们需要创建一个可滚动的...在提供的"Android 中ScrollView嵌套GridView,ListView的实例.pdf"文件中,应该包含了关于如何实际操作的详细步骤和示例代码,你可以参考这份文档来实践这一技术。

    解决scrollView和gridView和ListView嵌套的冲突

    本篇文章将详细探讨如何解决ScrollView与GridView、ListView嵌套时的冲突,并讨论如何动态测量ListView和GridView的高度。 首先,我们要理解为什么会出现这种冲突。ScrollView是一个可以容纳一个子视图并允许用户...

Global site tag (gtag.js) - Google Analytics