NestedScrollView的滑动监听目前仅限api23及以上,为了兼容低版本如下自定义方法

可以自定义NestedScrollView即可如下:

package cn.net.gfan.world.widget;import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;/*** 自定义NestedScrollView* 解决滑动监听只能在API23以上才能使用的问题** @author xiayiye5* 2020年8月3日12:56:50*/
public class XiaYiYeNestedScrollView extends NestedScrollView {private OnXiaYiYeScrollChanged mOnXiaYiYeScrollChanged;public XiaYiYeNestedScrollView(@NonNull Context context) {this(context, null);}public XiaYiYeNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public XiaYiYeNestedScrollView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (mOnXiaYiYeScrollChanged != null) {mOnXiaYiYeScrollChanged.onScroll(l, t, oldl, oldt);}}public void setXiaYiYeOnScrollChanged(OnXiaYiYeScrollChanged onXiaYiYeScrollChanged) {this.mOnXiaYiYeScrollChanged = onXiaYiYeScrollChanged;}public interface OnXiaYiYeScrollChanged {/*** 滑动的方法** @param left    左边* @param top     上边* @param oldLeft 之前的左边* @param oldTop  之前的上边*/void onScroll(int left, int top, int oldLeft, int oldTop);}
}

调用方法:

 //设置滑动监听事件nestNewTopic.setXiaYiYeOnScrollChanged(new XiaYiYeNestedScrollView.OnXiaYiYeScrollChanged() {@Overridepublic void onScroll(int left, int top, int oldLeft, int oldTop) {final int[] colorValue = {0X00000000};float height = ScreenTools.dip2px(getApplicationContext(), 287) - getStatusBarHeight();int startColor = ContextCompat.getColor(mContext, R.color.color_transparent);int endColor = ContextCompat.getColor(mContext, R.color.white);if (top <= 0) {tvTitle.setTextColor(Color.WHITE);ivMainSearch.setImageResource(R.drawable.icon_main_tab_search_white);ivMainMsg.setImageResource(R.drawable.icon_main_tab_msg_white);colorValue[0] = startColor;} else if (top >= height) {//设置标题栏想要的颜色tvTitle.setTextColor(ContextCompat.getColor(parentContext, R.color.color_333));ivMainSearch.setImageResource(R.drawable.icon_main_tab_search);ivMainMsg.setImageResource(R.drawable.icon_main_tab_msg);colorValue[0] = endColor;} else {colorValue[0] = (int) argbEvaluator.evaluate(top / height, startColor, endColor);}//设置渐变背景色rlTitle.setBackgroundColor(colorValue[0]);}});

如上代码即可

感谢原博主:博主直达

Android开发之解决NestedScrollView滑动监听兼容低版本的方法相关推荐

  1. Android事件的响应,Android 开发事件响应之基于监听的事件响应

    Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事 ...

  2. Android RecyclerView(九)滑动监听综述

    Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...

  3. Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色

    效果图 滑动前: 滑动中: 滑动到底部: 项目结构 ObservableScrollView package com.jukopro.titlebarcolor;import android.cont ...

  4. 解决Fiddler不能监听Java HttpURLConnection请求的方法

    在默认情况下,Fiddler不能监听Java HttpURLConnection请求.究其原因,Java的网络通信协议栈可能浏览器的通信协议栈略有区别,Fiddler监听Http请求的原理是 在应用程 ...

  5. android scrollview 滚动监听,Android开发之ScrollView的滑动监听

    我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 protected void onScrollChanged ...

  6. Android开发之使用BroadcastReceiver实时监听电量(源代码分享)

    Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过Context.registerReceiver()方法 ...

  7. Android 开发中的View事件监听机制

    在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...

  8. Android监听左右滑删除通知,Android 滑动监听RecyclerView线性流+左右划删除+上下移动...

    废话不多说了,直接给大家贴代码了.具体代码如下所示: xmlns:tools="http://schemas.android.com/tools" android:layout_w ...

  9. android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

    1.创建  ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...

最新文章

  1. pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5]
  2. 框架源码系列四:手写Spring-配置(为什么要提供配置的方法、选择什么样的配置方式、配置方式的工作过程是怎样的、分步骤一个一个的去分析和设计)...
  3. javascript 学习笔记(四) 倒计时程序
  4. 用react-service做状态管理,适用于react、react native
  5. linux 使用退格键时出现^H解决方法
  6. haproxy负载均衡_使用haproxy搭建web集群
  7. 同花顺如何切换k线_K线之形态学:浅谈纸白银产品该如何去做好交易?
  8. 微服务SpringCloud中的负载均衡,你都会么?
  9. 比特币在推特上的活跃度正接近2017年水平
  10. python类的应用_python中文件类的应用
  11. php mysql_affected_rows获取sql执行影响的行数
  12. 使用k8s Ingress暴露gRPC服务
  13. 圆满结束,一睹各位大神风采
  14. 温故知新----css盒模型
  15. php 爬虫图片,随机图片API-json格式基于python爬虫和PHP
  16. Js常用40个页面效果
  17. docker 启动失败:specified both as a flag and in the configuration fir/daemon.json
  18. Excel批量转置——录制会循环的宏
  19. tiktok也会像Facebook一样封号吗?哪些行为会封号?
  20. sql优化和索引常见的面试题(面试总结)

热门文章

  1. php数据存储mysql_php – 在MySQL中存储路线数据的最佳方式
  2. word域变成正常文本_超级干货|最全的PPT、Excel、Word实用宝典,助你办公效率翻倍!...
  3. 计算机自适应测试的应用 托福,计算机自适应测试系统的研究和应用.pdf
  4. python opencv 识别角度_OpenCV入门之获取图像的旋转角度
  5. 【学习Koa】原生koa2 静态资源服务器例子
  6. 记录一下:关于mysql数据误删除恢复的问题
  7. [转]用C#编写ActiveX控件(一)
  8. MFC添加自定义消息及重写消息过程
  9. Marshal在C#中的应用(void *指针到IntPtr的转化)
  10. 操作系统与数据库知识点