V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
harley27
V2EX  ›  Android

如何使左右滚动 ViewPager 的动作触发一个方法?

  •  
  •   harley27 · Sep 25, 2019 · 13843 views
    This topic created in 2405 days ago, the information mentioned may be changed or developed.

    比如,在 Activty 中放一个 100 页的 ViewPager 和两个按钮,一个按钮是跳转到首页,一个按钮是跳转到尾页。
    要求在首页和尾页时,禁用相应的按钮。

    有试过将按钮写在 ViewPager 建立的 Fragment 中,但由于每一组按钮都是和 Fragment 的内容一起连带的,所以按钮会和页面一起滚动,而且会多出 99 个按钮实例,没有必要。想要的效果应该是按钮不在 ViewPager 的 Fragment 中,在外层 Activity 中位置不动,但这就需要每次滚动页面都刷新一遍状态。所以复写什么方法,或使用什么方案才能实现这个效果呢?

    6 replies    2019-09-26 17:08:18 +08:00
    maninfog
        1
    maninfog  
       Sep 25, 2019   ❤️ 1
    viewPager.addOnPageChangeListener 这个方法不行吗
    Cabana
        2
    Cabana  
       Sep 25, 2019 via Android
    你这层级没弄清把,把按钮放 activity 那层显示在 viewpager 上方不行吗?
    harley27
        3
    harley27  
    OP
       Sep 25, 2019
    @maninfog 好硬的干货
    谢谢
    harley27
        4
    harley27  
    OP
       Sep 25, 2019
    @Cabana
    Button 可以显示在 ViewPager 上方?
    是在 layout 的 xml 里实现吗?
    PlainTech
        5
    PlainTech  
       Sep 25, 2019
    将按钮放在 Activity 中,监听 ViewPager 的滑动判断位置进行处理
    Porster
        6
    Porster  
       Sep 26, 2019
    ViewPager viewPager;
    //Fragment 集合
    final List<Fragment> fragments;
    //前一页、后一页
    Button mPre,mNext;

    viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
    @Override
    public void onPageSelected(int position) {
    super.onPageSelected(position);
    mPre.setEnabled(position>0);
    mNext.setEnabled(position<fragments.size()-1);
    }
    });
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   937 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 22:39 · PVG 06:39 · LAX 15:39 · JFK 18:39
    ♥ Do have faith in what you're doing.