我必须监听特定 View 的位置变化。 View 可以在任何地方,例如,它可以是 ListView 或回收器 View 的项目,也可以是 ScrollView 或嵌套 ScrollView 等的 subview 。但是每当 View 在屏幕中的位置发生更改时(每当x,y 坐标正在更新),我需要得到通知。我试过了
view.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View view, int i, int i1, int i2, int i3) {
Log.d(TAG, "Position changed");
}
});
和
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Log.d(TAG, "Layout changed");
}
});
但似乎不起作用
我也尝试了GestureDetectorCompat
,但是在fling期间,x,y位置不准确。
我的问题有解决办法吗?希望我的问题很清楚。提前致谢!!
最佳答案
我认为您可以利用ViewTreeObserver.OnScrollChangedListener
回调。这是当 View 树中的某些内容滚动时调用的回调。因此,请尝试为正在移动的 View 添加此监听器。
view.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// Do what you want to do when the view has been scrolled
}
});
关于android - 如何为 View 设置移动监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42328742/