确定何时ViewPager改变网页确定何时ViewPager改变网页(Determine when

2019-06-14 12:09发布

我有一个ViewPager内三页(片段),但我只想要两那些页面显示的菜单项。

在给定的代码之前的SO答案似乎不工作:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser == true) { }
    else if (isVisibleToUser == false) {  }

}

Eclipse中说不需要@覆盖和超级不能设置。 这是从来没有被系统调用,即使它是我将如何确定正在显示的时刻哪一页? 我能有一些帮助吗?

Answer 1:

使用ViewPager.onPageChangeListener

viewPager.addOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    public void onPageSelected(int position) {
        // Check if this is the page you want.
    }
});


Answer 2:

ViewPager.setOnPageChangeListener现在已经过时了。 现在,您需要使用ViewPager.addOnPageChangeListener代替。

例如,

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });


Answer 3:

您还可以使用ViewPager.SimpleOnPageChangeListener代替ViewPager.OnPageChangeListener并只覆盖您要使用这些方法。

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

    // optional 
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }

    // optional 
    @Override
    public void onPageSelected(int position) { }

    // optional 
    @Override
    public void onPageScrollStateChanged(int state) { }
});

希望这有助于:)

编辑:按照机器人的API, setOnPageChangeListener (ViewPager.OnPageChangeListener listener)已被弃用。 请检查此网址: - 安卓ViewPager API



Answer 4:

对于科特林,

view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageScrollStateChanged(state: Int) {
            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

            }

            override fun onPageSelected(position: Int) {
            }
        })


文章来源: Determine when a ViewPager changes pages