.使用网上用的动态改变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(推荐):
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); } }
相关推荐
总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...
当ScrollView中嵌套ListView或者GrideView时,listView和GrideView不能完全显示的时候
1、ScrollView嵌套listView、GridView时滑动冲突,自定义 ListView、GridView; 2、自定义ScrollView,解决 当有横向的滑动操作时,与ScrollView上下滑动冲突; 2、横向ListView
综上所述,ScrollView嵌套ListView或GridView涉及到滚动冲突的处理、性能优化和用户体验的改进等多个方面。开发者需要根据具体需求选择合适的方法,并进行细致的测试以确保应用的稳定性和流畅性。在实际开发中,还...
但是,直接将ScrollView嵌套在ListView或者GridView中会带来问题,因为这可能导致滚动冲突。当ScrollView和ListView/GridView都尝试处理用户的滑动事件时,可能会导致滚动不顺畅或者无法正常滚动。为了解决这个问题...
总的来说,解决ScrollView嵌套ListView问题需要根据具体应用场景选择合适的方法。NestedScrollView、RecyclerView、HeaderView以及自定义ViewGroup都是有效的策略,开发者应根据项目需求和性能考虑来选择最佳方案。...
本示例中的"scrollView嵌套ListView的下拉刷新和加载更多"着重解决了这样一个问题:如何在ScrollView中嵌入一个具有下拉刷新和上拉加载功能的ListView,而且不依赖任何第三方库。这通常涉及到自定义滚动事件的处理和...
然而,当ScrollView嵌套ListView或GridView时,常常会遇到内容显示不全的问题。这个问题的主要原因在于ListView和GridView在ScrollView中无法正确测量自身高度,导致它们仅显示一部分数据。 首先,我们需要理解为...
然而,ScrollView不支持动态加载和复用视图,这意味着如果试图将一个包含大量子视图的ListView或GridView放入ScrollView,会导致性能问题和滚动不流畅。 ListView是一种高效的列表展示组件,它通过复用视图...
1. **嵌套滚动**:当ScrollView嵌套ListView或GridView时,由于两者都有滚动功能,会导致滚动冲突,即一个组件滚动时,另一个组件也可能跟随滚动。 2. **触摸事件处理**:ScrollView会捕获所有的触摸事件,导致...
在Android开发过程中,经常会出现需要在一个ScrollView中嵌套ListView或GridView的情况。这种布局方式虽然在视觉上看起来合理,但在实际开发中会遇到一些技术难题。由于ListView和GridView都继承自ScrollView,所以...
然而,由于ScrollView本身只支持垂直滚动,如果在内部嵌套了其他可滚动的视图(如ListView或GridView),可能会导致滚动冲突。解决这个问题的一个常见方法是使用NestedScrollView,它是Android Support Library中的...
Android中ScrollView嵌套GridView显示不全解决方法 由于ScrollView和GridView这两款控件都自带滚动条,一起使用GridView会显示不全 解决方法:自定义gridview 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! ...
本篇文章将详细探讨“ScrollView嵌套问题总汇”,包括S嵌L(ScrollView嵌套ListView)、S嵌G(ScrollView嵌套GridView)、S嵌S(ScrollView嵌套ScrollView)、H嵌G(HorizontalScrollView嵌套GridView)以及S嵌(H嵌G...
这类问题通常表现为:当ScrollView内部包含一个ListView或GridView时,用户滑动屏幕时可能无法正常滚动列表中的项,而是整个ScrollView一起滚动,或者出现其它不可预料的行为。下面将详细介绍这种滑动冲突的原因以及...
在Android开发中,嵌套滚动视图是一个常见的需求,但同时也常常伴随着一些技术挑战,比如ScrollView、GridView和ListView之间的滑动冲突以及ListView item内容显示不全的问题。本文将深入探讨这些问题,并提供有效的...
总之,解决ScrollView嵌套ListView或GridView冲突的关键在于正确地重写子类的`onMeasure()`方法,或使用支持嵌套滚动的NestedScrollView。通过这些方法,开发者可以在保持用户体验的同时,解决这种常见的布局问题。
在Android开发中,有时我们需要创建一个可滚动的...在提供的"Android 中ScrollView嵌套GridView,ListView的实例.pdf"文件中,应该包含了关于如何实际操作的详细步骤和示例代码,你可以参考这份文档来实践这一技术。
本篇文章将详细探讨如何解决ScrollView与GridView、ListView嵌套时的冲突,并讨论如何动态测量ListView和GridView的高度。 首先,我们要理解为什么会出现这种冲突。ScrollView是一个可以容纳一个子视图并允许用户...