ScrollView 与ListView 滑动冲突完美解决

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

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

 

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

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

    方式一:在XML中写死     ide

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

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

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

    方式三:代码中动态设置高度(让ListView高度最大 显示彻底全部数据)spa

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);  
}

 

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

前提1:ListView 显示所有内容(假如4条数据 我显示满4条)code

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

  此时ListView不能滑动,也不必滑动,由于已经显示彻底数据。事件

 

前提1:ListView 不想显示所有内容(假如100条数据 我只显示10条 滑动查看其他)get

  使用上述方式一或二,ListView没有显示彻底数据io

  可是想焦点在ListView时滑动ListView,焦点在ScrollView时滑动ScrollViewclass

  给ListView加上监听OnTouchListener

listView.setOnTouchListener(new View.OnTouchListener() {
    
  @Override

  public boolean onTouch(View arg0, MotionEvent arg1) {
    scrollView.requestDisallowInterceptTouchEvent(true);

return false;  }
});
相关文章
相关标签/搜索