如何判断一个片段是否在屏幕上,在ViewPager中可见?

13 浏览
0 Comments

如何判断一个片段是否在屏幕上,在ViewPager中可见?

我正在尝试在片段出现在用户屏幕上时立即启动一个处理程序。

我尝试了许多其他方法,它们似乎都在片段出现之前就启动了处理程序线程。通常是在之前的片段触发它。

其他线程中流传的isVisible()方法说一个片段是可见的,但实际上它并不在屏幕上。

非常感谢任何帮助!

0
0 Comments

判断一个片段是否在屏幕上可见的方法可以通过Fragment的getUserVisibleHint()或setUserVisibleHint(boolean isVisibleToUser)方法来处理。另一种方法是添加一个ViewPager.OnPageChangeListener,并在onPageSelected方法中确定所选片段的位置并做出相应的反应。

代码示例:

// 使用getUserVisibleHint()方法判断片段是否可见
if (fragment.getUserVisibleHint()) {
    // 片段可见的逻辑
} else {
    // 片段不可见的逻辑
}
// 添加ViewPager.OnPageChangeListener监听器
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        // 根据选定的片段位置做出相应的反应
        if (position == 0) {
            // 第一个片段的逻辑
        } else if (position == 1) {
            // 第二个片段的逻辑
        } else if (position == 2) {
            // 第三个片段的逻辑
        }
    }
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // 翻页过程中的逻辑
    }
    @Override
    public void onPageScrollStateChanged(int state) {
        // 页面滚动状态改变时的逻辑
    }
});

0