`
wcgdonot
  • 浏览: 92488 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[ListView] 在ScrollView中嵌套ListView

阅读更多

问题:

在ScrollView中嵌套ListView时,ListView显示不完全,高度会有问题。

 

原因:

默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计算的。

 

解决思路:

设置完ListView的Adapter后,根据ListView的子项重新计算ListView的高度,然后将高度值再作为LayoutParams设置给ListView。

 

Code

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

            int totalHeight = 0;
            for (int i = 0; i < listAdapter.getCount(); i++) {
                View listItem = listAdapter.getView(i, null, listView);
                listItem.measure(0, 0);
                totalHeight += listItem.getMeasuredHeight();
            }

            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            listView.setLayoutParams(params);
        }
    }

 只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中。

 

注意:

  • 子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
  • 因为滑动事件会被父ScrollView吃掉,所以子ScrollView中无法滑动的(如果它没有显示完全的话)。

更多讨论请见 http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing

分享到:
评论

相关推荐

    经典ScrollView嵌套ListView和ScrollView

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

    listview和scrollview的嵌套

    5. **优化ListView**:对于ListView中的内容,尽量减少每行的高度,使其能完全显示在ScrollView中。这样,ListView实际上不会滚动,从而避免了冲突。 在具体实现过程中,我们还需要考虑性能优化,比如使用...

    解决Android中ListView和ScrollView嵌套冲突

    解决ListView和ScrollView嵌套冲突的一种常见方法是避免直接在ScrollView内使用ListView。如果数据量不大,可以考虑改用LinearLayout或者NestedScrollView,它们可以更好地与ScrollView协同工作。但对于大数据集,...

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

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

    Scrollview中嵌套listview,listview中再嵌套listview

    在Android开发中,有时我们需要构建复杂的用户界面,这时可能会涉及到ScrollView与ListView的嵌套使用,甚至在ListView中再嵌套ListView。这样的布局设计虽然能够满足多样化的显示需求,但同时也带来了一些挑战,如...

    ScrollView中嵌套ListView的例子

    接下来,我们来看如何在代码中实现ScrollView嵌套ListView: 1. 首先,创建一个布局文件,将NestedScrollView作为根视图,然后在其内部添加一个LinearLayout或其他布局,作为ListView的父视图。 2. 在LinearLayout...

    ScrollView中嵌套Listview(两个)

    3. **使用HeadView和FootView**:在ListView中添加HeadView和FootView,模拟ScrollView的效果。将需要在ScrollView中显示的内容作为ListView的头尾视图,然后让ListView中的其他内容滚动。但这种方法可能不适用于...

    Android解决ListView嵌套ScrollView不能刷新

    然而,当ListView需要与ScrollView嵌套使用时,可能会遇到一些问题,特别是不能正常刷新。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解为什么ListView嵌套ScrollView会导致刷新问题。ListView自身...

    弹性拉伸Scrollview、scrollview嵌套listview和scrollview滑动监听demo

    本文将深入探讨如何实现“弹性拉伸”的ScrollView、在ScrollView中嵌套ListView以及添加ScrollView的滑动监听。这些技巧在创建复杂的用户界面时非常实用。 首先,让我们谈谈“弹性拉伸”效果的ScrollView。这种效果...

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

    ScrollView嵌套ListView可能导致性能下降,因为两者都会处理滑动事件,增加渲染负担。 **最佳实践**: 1. 避免在ScrollView中嵌套ListView,尽可能使用RecyclerView替代ListView,因为它更高效且支持多种滚动效果。...

    ScrollView中嵌套ListView,还可以嵌套多个listview 解决无法共存问题

    ScrollView中嵌套ListView,还可以嵌套多个listview 解决无法共存问题。放到项目中可以直接用

    listview在scrollview中完整显示

    然而,当它被嵌套在ScrollView中时,通常会出现一些问题,比如滚动冲突或者ListView无法完整显示。这是因为ScrollView本身就是一个可滚动的视图,而ListView也是可滚动的,两者结合可能会导致滚动行为不正常。本篇...

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

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

    ScrollView中嵌套ScrollView或ListView并且内部ScrollView或ListView也可滑动.

    在ScrollView中嵌套ListView或RecyclerView,可以实现类似抽屉效果,或者在主内容区下方展示附加信息。 **知识点5:滚动事件处理** 在嵌套滚动场景下,需要处理滚动事件的分发。NestedScrollView和RecyclerView都...

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

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

    Android:ScrollView中嵌套ViewPager和ListView示例

    然而,当我们在ScrollView中嵌套复杂的组件,如ViewPager或ListView时,可能会遇到一些挑战。本文将深入探讨如何在ScrollView中正确地嵌套这两个组件,以及可能遇到的问题及其解决方案。 首先,我们来看ScrollView...

    ScrollView不冲突嵌套ListView

    然而,直接在ScrollView内嵌套ListView时,可能会出现一些问题,比如滚动冲突,导致用户体验不佳。本篇文章将深入探讨如何解决ScrollView与ListView的嵌套问题,并通过自定义ListView来实现正常显示每个Item,确保...

    scrollview嵌套问题总汇

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

    水平 横线 listView 嵌套在 ScrollView中 已经处理滑动问题

    当HorizontalListView嵌套在ScrollView中时,问题就出现了。由于ScrollView默认会捕获所有的触摸事件,导致HorizontalListView无法正常响应用户的水平滑动操作,这也就是所谓的“滑动卡”问题。解决这个问题的关键...

    ScrollView中嵌套listview

    在ListView中,你需要确保在手指离开屏幕时将滑动事件传递回ScrollView。 ```java public class CustomScrollView extends ScrollView { // ... @Override public boolean onInterceptTouchEvent(MotionEvent ev...

Global site tag (gtag.js) - Google Analytics