ScrollView 与ListView 滑动冲突完美解决

一、介绍ListView高度的设置方法

二、根据实际需求解决冲突问题

一、介绍ListView高度的设置方法

在ScrollView中使用ListView,ListView的高度会不正常。

    方式一:在XML中写死     

android:layout_width="match_parent"
android:layout_height="120dp"

    方式二:代码中设置固定高度(如果在运行过程中才能决定ListView高度)

public void setHeight(int height){
  LayoutParams params = this.listview.getLayoutParams();
  params.width = LayoutParams.FILL_PARENT;
  params.height = height;
  listview.setLayoutParams(layoutParams);
}

    方式三:代码中动态设置高度(让ListView高度最大 显示完全所有数据)

public void setHeight(){
    int height = 0;
    int count = adapter.getCount();
    for(int i=0;i<count;i++){
        View temp = adapter.getView(i,null,listview);
        temp.measure(0,0);
        height += temp.getMeasuredHeight();
    }
    LayoutParams params = this.listview.getLayoutParams();
    params.width = LayoutParams.FILL_PARENT;
    params.height = height;
    listview.setLayoutParams(layoutParams);
}

二、根据实际需求解决冲突问题

前提1:ListView 显示全部内容(假如4条数据 我显示满4条)

  上述方式三让ListView高度最大,显示完全数据,滑动时就只会响应ScrollView滑动事件

  此时ListView不能滑动,也没必要滑动,因为已经显示完全数据。

前提1:ListView 不想显示全部内容(假如100条数据 我只显示10条 滑动查看其余)

  使用上述方式一或二,ListView没有显示完全数据

  但是想焦点在ListView时滑动ListView,焦点在ScrollView时滑动ScrollView

  给ListView加上监听OnTouchListener

listView.setOnTouchListener(new View.OnTouchListener() {?      @Override?      public boolean onTouch(View arg0, MotionEvent arg1) {    scrollView.requestDisallowInterceptTouchEvent(true);?       return false;  }?});
时间: 2024-12-28 01:16:12

ScrollView 与ListView 滑动冲突完美解决的相关文章

ScrollView 嵌套ListView 滑动冲突,与显示不全

import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * * @author jiarh *2014-8-14 */ public class UserListView extends ListView { public UserListView(Context context) { super(context); } public UserLis

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

大家想想listView的实现方式 就是一个item一个item 添加到一个布局中, 那么LinearLayout可不可以像ListView 那样 往里面添加item  答案是可以的 我们先模拟listView 的LinearLayout类 public class LinearLayoutForListView extends LinearLayout { private ListAdapter adapter; private OnClickListener onClickListener

scrollview 和 listview滑动冲突解决

http://blog.csdn.net/wanghao200906/article/details/51084975 http://www.cnblogs.com/shitianzeng/articles/2467533.html http://blog.csdn.net/zhaokaiqiang1992/article/details/38585547 http://blog.csdn.net/yaosongqwe/article/details/47311617 http://www.ji

(转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 本篇主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套ViewPager 导致的滑动冲突 轮播图的几种实现方式 先看一下效果图 ScrollView里面嵌套ViewPager ViewPager里面嵌套ViewPager View的 事件分发机制 这篇博客大打算详细讲解View的事件分发机制

关于Android滑动冲突的解决方法(二)

之前的一遍学习笔记主要就Android滑动冲突中,在不同方向的滑动所造成冲突进行了了解,这样的冲突非常easy理解,当然也非常easy解决.今天,就同方向的滑动所造成的冲突进行一下了解,这里就先以垂直方向的滑动冲突为背景,这也是日常开发中最常见的一种情况. 这里先看一张效果图 由于GIF 图片大小的限制.截图效果不是非常好 上图是在购物软件上常见的上拉查看图文详情,关于这中动画效果的实现.事实上实现总体的效果,办法是有非常多的,网上有非常多相关的样例,可是对某些细节的处理不是非常清晰.比方,下拉

PullToRefreshListView中嵌套ViewPager滑动冲突的解决

PullToRefreshListView中嵌套ViewPager滑动冲突的解决 最近恰好遇到PullToRefreshListView中需要嵌套ViewPager的情况,ViewPager 作为头部添加到ListView中,发先ViewPager在滑动过程中流畅性太差几乎很难左右滑动.在网上也看了很多大神的介绍,看了ViewPager的源码.其实思路很简单,只不过没有看到有教完整的说明,为了帮转像我这样的green hand 少走弯路,将过程整理下.大神自动略过~_~: 滑动冲突的解决大概要处

浅谈android中的ListView合集系列之解决ScrollView和ListView嵌套冲突(一)

相信大家都已经可以熟练使用ListView和GridView,大神们估计都在使用RecyclerView了.如果还在使用ListView,你肯定有这样的一个深刻的感受,那就是在做一个APP的时候使用ListView和GridView很频繁,并且经常会遇到一个页面中除了有ListView或GridView可能还有一些其他的内容,但是可能内容很多,你第一时间就会想到让它整体滑动即可,那就是在总的布局外面包裹一个ScrollView.也就是出现了ScrollView中嵌套一个ListView的场景,或

解决ScrollView与ListView事件冲突

1,在最近做项目的时候使用ScrollView嵌套ListView的时候发现ListView的滑动效果失效,简单的网上搜索了一下,也就有了下面的解决方法,在ListView中设置事件的监听listview.OnTouchListener(),让父控件不影响子控件的事件 1 2 3 4 5 6 7 8 9 listView.setOnTouchListener(new OnTouchListener() {                             @Override        

Android 解决ScrollView与父视图滑动冲突问题

最近在解决一个比较棘手的问题,就是ScrollView与父视图之间滑动冲突的问题. 这里所说的滑动冲突,是指包裹ScrollView的父视图本身就是一个可以滑动的组件,比如说ScrollView嵌套ScrollView的情况(当然,这在实际应用中是没有意义的,因为ScrollView只能包含一个子组件,这里只是举一个栗子). 问题定义 说要解决这样一个问题,肯定会有点摸不到头脑,但我们可以用分解法,来"大事化小". 遇到这种滑动事件冲突的嵌套首先要明白一个孰先孰后的问题,就是先让父组件