zoukankan      html  css  js  c++  java
  • 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;
      }
    
}
    );
  • 相关阅读:
    Vue——动画
    Vue——v-if 和 v-show 的使用和特点
    Vue——v-for中 key 属性的使用
    Vue——基础指令
    Vue——v-for指令的四种循环方式
    Vue——如何在Vue中使用样式
    mac安装redis
    常见的web攻击方式
    mobx 入门
    Mac显示器不亮
  • 原文地址:https://www.cnblogs.com/Sweet-Candy/p/6252639.html
Copyright © 2011-2022 走看看