有这么个问题,View.scrollTo(x,y)之后 页面会发生变化,而后点击移动后的点击事件,发现点击事件的对应不上,即200,200 的点击事件 变成了200+x,200+y的点击事件。
经资料查阅与自己实验理解后发现,scrollTo只会导致页面位置的变化,而原本的点击事件的具体响应实际位置并不会改变。
如果完成上述需求,有一个想法,就是在外面添加ScrollView,之后利用ScrollView.smoothScrollTo(x,y)方法,这样即就让他页面上发生变化,且实际事件的响应位置也发生了变化。
需要注意的是:需要在线程中使用ScrollView.smoothScrollTo(x,y)方法
代码如下
if (handler1 == null)
handler1 = new Handler();
handler1.postDelayed(() -> {
if (!isVisibleLocal(binding.clPasswordIcon))
binding.scrollView.smoothScrollTo(0, unDisplayViewSize(binding.clPasswordIcon));
}, 300);
PS:可能只要自己看的懂,毕竟需要结合具体场景,只做记录用