如何通过ViewPager在Fragment中显示和隐藏ActionBar

3
我有一个包含A、B、C、D四个fragment的viewpager。 我希望在A fragment中隐藏actionbar,在其余fragment中显示actionbar。
有什么想法? 谢谢。
编辑: 尝试了以下方法,但所有fragment中都看到了actionbar。
@Override 
public void onPageSelected(int position) {
if (position == 0) {
  mActionBar.hide();
} else {
  mActionBar.show();
}
}

当您使用viewpager打开活动时,我希望Fragment A在没有操作栏的情况下显示,但是当我滑动以查看其他片段时,我希望操作栏被显示。

1个回答

2
在Fragments中,您想显示操作栏:
@Override
public void onResume() {
    super.onResume();
    actionBar.show();
}

在片段中,您不希望显示操作栏:
@Override
public void onResume() {
    super.onResume();
    actionBar.hide();
}

对于ViewPager:

viewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int selectedPage) {
        // Check the selectedPage here and then show and 
        // hide the actionBar accordingly. 

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {

        }
    });

当使用ViewPager时,这种方法不起作用。 ActionBar将在所有片段中显示。 - qjinee
啊!忽略那个。在这种情况下,您可以使用 onPageSelected(int position) 方法来检查所选页面,并相应地隐藏和显示操作栏。 - Shivam Verma
刚刚尝试了以下代码,但是ActionBar仍然在所有的片段中显示。 @Override public void onPageSelected(int position) { if (position == 0) { mActionBar.hide(); } else { mActionBar.show(); } } - qjinee
请将代码放在问题本身中。另外,请解释我应该如何处理它? - Shivam Verma
谢谢,虽然有点不太流畅,但是ActionBar的显示和隐藏看起来朝着正确的方向发展。我曾经尝试将OnPageChangeListener实现到FragmentPagerAdapter中,但是没有任何效果。 - qjinee
为了改善卡顿的部分,在页面更改后约500ms(您可以尝试不同的时间)隐藏/显示操作栏。如果同时执行多个操作,动画可能会出现卡顿。 - Shivam Verma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接