• 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;
      }
    
}
    );
  • 相关阅读:
    Volar vue终极开发神器!
    Object.assign基础与实际应用场景
    如何将Promise.then中的值直接return出来
    zap linux环境下的使用
    量化
    博客园中实现代码高亮
    react环境搭建
    博客园中实现代码高亮
    Python之标准库【shutil】
    Python之标准库【shutil】
  • 原文地址:https://www.cnblogs.com/Sweet-Candy/p/6252639.html
Copyright © 2020-2023  润新知