关闭

Android开发之解决ListView和ScrollView滑动冲突的问题

333人阅读 评论(0) 收藏 举报
分类:

最近在项目中遇到了如下问题:ScrollView中嵌套2个ListView。当滑动ScrollView的时候,ListView的显示只有1-2个item的问题。上网查过之后,一些解决方案,比如强行设置ListView的高度,还有一些设置ScrollView的监听等方法。不能够解决我的问题。后来还是总结出了两套解决方案。

方案一:自定义ListView,重写onMeasure()方法。

代码如下:

public class MyListView extends ListView {
    public MyListView(Context context) {
        super(context);
    }

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

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

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

在onMeasure方法中,指定ListView的高度。


方案二:创建如下方法并调用。

/**
     * 解决ScrollView和ListView滑动冲突的问题,让ListView随着ScrollView一起滑动。
     * */
    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }

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

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


0
0
查看评论

Android ScrollView中嵌套ListView,滑动冲突问题的解决

在项目开发过程,遇到ScrollView中嵌套ListView,结果点击ListView上下滑动时,整个页面滑动,也就是滑动事件被ScrollView消费掉了,造成listView无法滑动的结果,然后改动布局,替换成fragment,在fragment里面实现listview的刷新,结果还是不行,最...
  • androidforwell
  • androidforwell
  • 2016-09-22 13:01
  • 3208

ScrollView与Listview嵌套使用时的滑动冲突问题

滑动冲突解决方案在我们的布局中有可能使用Scrollview嵌套Listview的情况,这时候如果不加任何的处理,就会发生滑动冲突问题,即Listview没有完全显示,也不能滑动,触摸事件被Scrollview拦截而使只有Scrollview在滑动。根据Android开发ViewGroup及View...
  • mXianLin
  • mXianLin
  • 2016-07-29 09:46
  • 1289

关于解决多个listView嵌套到scrollview中滑动冲突的办法

多个ListView嵌套到一个android UI界面中时会产生滑动冲突,主要原因是每个listView拥有自己的滑动条而造成,解决办法是为每一个listView固定一个高度.  下面介绍一个通用的方法来解决 empty /* * 解决多个listView滑动冲突的问题 ...
  • zjsczzt
  • zjsczzt
  • 2017-04-01 10:00
  • 336

解决ScrollView或ListView中嵌套ListView引起的冲突

转载请注明:[noyet12的博客](http://blog.csdn.net/u012975705) 在ScrollView或ListView等滑动控件中嵌套ListView时,往往会导致ListView显示不完整,只显示一条数据,想使ListView显示完整可以通过重写ListView的onMe...
  • u012975705
  • u012975705
  • 2015-11-25 11:45
  • 4235

ScrollView嵌套ListView——解决滑动冲突问题

//布局中的代码实现 一个简单的布局设置 演义滑动冲突<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas....
  • Mannver
  • Mannver
  • 2016-04-12 20:49
  • 11157

Android 中listview 和scrollview 滚动冲突事件的解决方法

如果一个布局中同事引用到了listview 和scrollview 两种滚动控件,那么listview 的滚动效果将被屏蔽掉,那么此时应加上dispatchTouchEvent()方法,然后选择先执行滚动的控件加上次方法。 代码展示如下: package com.example.androi...
  • u010481606
  • u010481606
  • 2015-08-08 14:44
  • 482

Android ScrollView和ListView事件冲突问题解决方法

不知道有没有朋友遇到这种问题:就是当你一个ScrollView里面包含一个ListView的时候,你会发现一个问题:当listview里面的item条目过多的时候,在Listview中只会显示一部分,当你滑动该listview确滑动的是ScrollView。从而导致listview中显示的N多数据显...
  • qq_26888925
  • qq_26888925
  • 2016-07-27 12:02
  • 467

安卓解决viewPager+scrollView+listView滑动冲突的问题

很多人在开发过程中都会设计到首页里面的排版功能,整个页面是一个可滑动的scrollView,上面是一个viewpager轮播图,然后下面又有带滑动的ListView,我们一般会先禁用ListView的滑动功能,让整个ScrollView在首页上下滑动就可以了。 禁用listView的滑动其实就是自...
  • bryant_liu24
  • bryant_liu24
  • 2015-08-06 09:22
  • 1736

解决ScrollView嵌套ListView显示不完全和滑动冲突的问题

在开发中我们往往会遇到这样奇葩的需求,让一个ScrollView嵌套ListView,那么我们就会遇到这样一个问题,就是listView 显示不完全和滚动冲突的问题。下面就来解决一下这个问题 首先看一下布局 <LinearLayout xmlns:android="http://s...
  • snow_anderson
  • snow_anderson
  • 2015-12-20 20:38
  • 1250

解决 ScrollView 嵌套 ListView 时,高度不正常和滑动冲突的问题

我们在用ScrollView嵌套ListView会两个问题,一个问题是ListView高度不正常,另外一个问题是ListView无法滑动。下面我们就来看看这两个问题怎么解决吧。 第一个问题 ListView只能显示一个Item高度的问题。因为ScrollView在测量ChildView的时候,强...
  • u010261933
  • u010261933
  • 2017-01-13 15:52
  • 1119
    个人资料
    • 访问:30215次
    • 积分:405
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:2篇
    • 译文:0篇
    • 评论:29条
    最新评论