大佬教程收集整理的这篇文章主要介绍了为什么ViewTreeObserver> OnScrollChangedListener在Android 2.x上没有调用它是否在onCreate()中设置?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现Android 2.x上的OnScrollChangedListener如果在第一次布局绘制之前添加它,就不会被触发.例如,在onCreate / onResume / onAttachedToWindow等方法中添加滚动侦听器时:
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceStatE) {
super.onCreate(savedInstanceStatE);
setContentView(R.layout.activity_main);
View myView = findViewById(R.id.MyView);
System.out.println(myView.getViewTreeObserver().isAlive()); // true
myView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// will never fire
}
});
}
}
那么,有谁知道这个问题的原因?
PS:似乎问题有时发生在API< =="" 15(android="">
要使OnScrollChangedListener在旧设备上工作(显然API@H_262_18@添加它,或者在测量布局之后(使用GlobalLayoutListener). 并且不要忘记创建一个像isScrollListenerAdded这样的标志,以避免重复的侦听器附加. 像这样的东西:
@H_936_5@myView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (!isScrollListenerAdded) { isScrollListenerAdded = true; // add OnScrollChangedListener here } } });
详情请见blog post about OnScrollChangedListener(Rus; Kotlin)
以上是大佬教程为你收集整理的为什么ViewTreeObserver> OnScrollChangedListener在Android 2.x上没有调用它是否在onCreate()中设置?全部内容,希望文章能够帮你解决为什么ViewTreeObserver> OnScrollChangedListener在Android 2.x上没有调用它是否在onCreate()中设置?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。