首页 > 解决方案 > 滚动更改时 NestedScroll View 闪烁

问题描述

嘿,我已经在我的嵌套滚动视图中实现了 scrollView.setOnScrollChangeListner()。然后我尝试在用户滚动时隐藏/显示我的操作栏。但是当我滚动时我的屏幕会闪烁。

我认为其背后的原因是当用户在调用 OnScroll() 的每个实例时滚动视图时,这可能会导致闪烁(可能我的 actionBar 显示/隐藏得如此之快以至于在我看来闪烁)

提前致谢

'''

scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
                @Override
                public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

                    if (scrollY > oldScrollY){
                        if (searchActive){
                            searchBar.setVisibility(View.GONE);
                        }else {
                            actionBar.setVisibility(View.GONE);
                        }
                    }else if (scrollY < oldScrollY){
                        if (searchActive){
                            searchBar.setVisibility(View.VISIBLE);
                        }else {
                            actionBar.setVisibility(View.VISIBLE);
                        }
                    }
                }
            });   

'''

标签: javaandroid

解决方案


嗨,回调 px 上的朋友滚动视图,您在 android 大小工具栏或操作栏 56dp 中将 px 转换为 dp

functions kotlin convert
  fun Convert_px(px: Float,context:Context):Int{
        val resources=context.resources
        val metrics=resources.displayMetrics
        val dp=px / (metrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
        return dp.toInt()
    }

滚动视图

binding?.scrollView?.viewTreeObserver?.addOnScrollChangedListener{
                var scroll_number:Int? = binding?.scrollView?.scrollY
                val dpsize : Int?=Convert_px(scroll_number!!.toFloat(),this@MainActivity)
                if(dpsize!! > 56){
                     searchBar.setVisibility(View.GONE);
                }
               else{
 searchBar.setVisibility(View.show);
               }

            }

或 matril 目标坐标

协调器布局


推荐阅读