java - 滚动更改时 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);
}
}
}
});
'''
解决方案
嗨,回调 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 目标坐标
协调器布局