Android实现ScrollView setOnScrollChangeListener

2024-04-14

在我的显示和隐藏一些小部件的应用程序中,我在该网站上找到了以下代码,但我无法在我的片段上实现它,例如:

public abstract class HidingScrollListener extends RecyclerView.OnScrollListener {
    private static final int HIDE_THRESHOLD = 20;
    private int mScrolledDistance = 0;
    private boolean mControlsVisible = true;
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        int firstVisibleItem = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();

        if (firstVisibleItem == 0) {
            if(!mControlsVisible) {
                onShow();
                mControlsVisible = true;
            }
        } else {
            if (mScrolledDistance > HIDE_THRESHOLD && mControlsVisible) {
                onHide();
                mControlsVisible = false;
                mScrolledDistance = 0;
            } else if (mScrolledDistance < -HIDE_THRESHOLD && !mControlsVisible) {
                onShow();
                mControlsVisible = true;
                mScrolledDistance = 0;
            }
        }
        if((mControlsVisible && dy>0) || (!mControlsVisible && dy<0)) {
            mScrolledDistance += dy;
        }
    }

    public abstract void onHide();
    public abstract void onShow();
}

我的片段:

public class FragmentMarketDetail extends Fragment implements ObservableHorizontalScrollView.OnScrollListener {

    private ScrollView scrollViewTest;
    private Context    context;

    public static FragmentMarketDetail newInstance() {
        FragmentMarketDetail fragmentFirst = new FragmentMarketDetail();
        return fragmentFirst;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_online_categories, container, false);
        scrollViewTest = (ScrollView) view.findViewById(R.id.scrollViewTest);
        scrollViewTest.setOnScrollChangeListener(context);
        return view;
    }

    @Override
    public void onScrollChanged(ObservableHorizontalScrollView scrollView, int x, int y, int oldX, int oldY) {
        Log.e("-----> onScrollChanged", x + "");
    }

    @Override
    public void onEndScroll(ObservableHorizontalScrollView scrollView) {
        Log.e("----->onEndScroll ", "");

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        context = activity;
    }
}

我收到此行的错误:scrollViewTest.setOnScrollChangeListener(context);


您无法直接在 API23 下将 onScrollChangedListener 设置为 ScrollView。 但是你可以使用这个

scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {

    @Override
    public void onScrollChanged() {

        int scrollX = rootScrollView.getScrollX(); //for horizontalScrollView
        int scrollY = rootScrollView.getScrollY(); //for verticalScrollView
        //DO SOMETHING WITH THE SCROLL COORDINATES

    }
});

see ScrollView 的 onScrollListener https://stackoverflow.com/a/23365539/6525469

Edit

scrollViewTest.setOnScrollChangeListener(context);

在上面的行中,您尝试设置Context作为一个倾听者,这是不可能的,因为你Fragment实施ObservableHorizontalScrollView.OnScrollListener你应该打电话

scrollViewTest.setOnScrollChangeListener(this);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android实现ScrollView setOnScrollChangeListener 的相关文章

随机推荐

  • Xcode 6.1:发现多个名为“count”的方法,其结果、参数类型或属性不匹配

    我越来越构建应用程序时发现多个名为 count 的方法结果 参数类型或属性错误不匹配 该应用程序在 32 位中运行良好 我已将其更改为 64 位苹果指南 https developer apple com news id 12172014b
  • 如何在couchdb中实现复杂的搜索过滤器?我应该避免暂时的观点吗?

    我想在网格中管理我的用户实体 我想对它们进行排序 并且我想为每一列都有一个搜索过滤器 我的动态生成的临时视图工作正常 function doc if doc type User Dynamic filters WHERE firstName
  • 无法进入由汇总插件替换定义的对象

    在 Svelte 组件中 我尝试访问我在汇总配置文件中设置的对象 我的rollup config js文件看起来像这样 import replace from rollup plugin replace export default rep
  • ASP.NET MVC3 Razor 模型内部查询(foreach 内 foreach)

    我在视图中遇到从不同实体提取数据的问题 基本上我有一个桥接实体 CategoryProduct 将类别和产品数据汇集在一起 我想要最终显示的是产品列表以及每个产品的类别 然而 我完全不知道如何实现最后一部分 显示类别 发生 这是我的模型的代
  • Spring 会话范围的 bean 作为原型 bean 中的依赖项?

    我多次阅读了有关这个主题的 spring 文档 但有些事情我仍然不清楚 文件指出 例如 如果要将 HTTP 请求作用域 bean 注入到另一个 bean 中 则必须注入 AOP 代理来代替该作用域 bean 也就是说 您需要注入一个代理对象
  • Perl IPC::Run3:如何为子进程模拟标准输入的 pty?

    这是一个后续问题IPC Open3 并确定子进程是否正在等待输入 https stackoverflow com questions 41454627 ipcopen3 and determining if child is waiting
  • D3 JS - Force Graph - 删除节点后不重新启动布局

    更新 现在 删除节点后图表可以正常运行 但是 当我有条件地删除非顺序节点 例如 4 5 10 时 图表不会显示正确的节点 请查看下面更新的点击处理程序 大量调试 我试图删除所有具有 d source 值 news24 的节点 它们都是大的蓝
  • 由于 poppler 无法在 Windows 上安装 pdftotext

    我正在尝试在 Windows 上安装 pdftotext pip install pdftotext 它最初失败是因为缺少 MS Visual Studio 现已安装 现在它因 poppler 问题而失败 我已经下载了 poppler 并安
  • Objective-C 中带有扫描过滤器的 dynamodb scanexpression

    AWSDynamoDBObjectMapper dynamoDBObjectMapper AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper AWSDynamoDBScanExpressi
  • 更新属性包装器(如 @StateObject)会影响不使用该属性的其他视图渲染

    当使用与视图更新关联的不同属性包装器时 一处的更改会影响不使用该属性的视图的呈现 struct ContentView View StateObject var viewModel MyViewModel State var thirdTi
  • PHP比较相等、空字符串、“0”和0

    我了解到 空字符串 0和 0 在php中都表示错误 我想知道 php 在比较相等性时是否考虑到这一点 str echo str 0 yes no prints no A echo str 0 yes no prints yes B A 行表
  • 如何在java中转换wav文件

    如何在java中转换wav文件 AudioFormat targetFormat new AudioFormat sourceFormat getEncoding fTargetFrameRate 16 sourceFormat getCh
  • 实体“HTML.Version”的声明必须以“>”结尾

    我是 XML 解析和 DTD 的新手 我试图创建一个简单的 SpringBean 程序并使用 Spring xml 实例化一个类 Triangle java 我的 DrawingApp java 如下所示 import org spring
  • .NET 中的防篡改配置文件?

    我们提供带有关联配置文件的 NET 应用程序 我们的顾问在安装过程中创建配置文件 我们希望让客户端很难篡改配置文件 我们有哪些途径 目前 我正在考虑使用我们的私钥对配置文件进行签名 并在应用程序启动时根据公钥对其进行验证 然后我将公钥隐藏在
  • 让 HTML5 视频适合父元素大小

    我在 中有一个 元素 当页面上的其他元素动态调整 添加 删除时 该元素会自动调整大小 我希望视频元素也能自动调整大小 以便它始终包含在其背景 div 中 如果我将视频元素的 CSS 高度和宽度设置为 100 这种方法就有效 因此它的大小始终
  • 具有动态排序依据的 LINQ 查询

    我有一个查询 我需要基于查询字符串参数进行排序 例如 如果排序参数是价格 则查询需要随价格更改 如果其评级则更改查询以按评级排序 我知道 PredicateBuilder 可以执行 And 和 OR 操作 但是如何进行动态 ordeby l
  • 创建新对话框时出现 NullPointerException

    我有一个 DialogFragment 它创建一个列表视图对话框 并在列表项上单击 我想显示一个警报对话框 但是当我创建该对话框时 它给了我一个NullPointerException出现我以前从未见过的错误 08 05 11 40 42
  • F# 的 timeit 函数

    我想写一些类似的东西 let timeit x a gt b let start System DateTime Now x let duration System DateTime Now start printfn time usage
  • Dtrace 中的局部变量

    如何使用 dtrace 访问函数的本地变量 例如 在下面的代码片段中 我想使用 dtrace 了解变量 x 的值 void foo int a int x some fun a 对于内核代码来说 跟踪局部变量是不可能的 因为没有检测任意内核
  • Android实现ScrollView setOnScrollChangeListener

    在我的显示和隐藏一些小部件的应用程序中 我在该网站上找到了以下代码 但我无法在我的片段上实现它 例如 public abstract class HidingScrollListener extends RecyclerView OnScr