滑动视图时如何更改按钮的背景色Pager2



我使用viewPager2在不同的片段之间滑动。但是,滑动时我需要更改底部按钮的颜色。只需点击按钮,我就可以捕捉并更改动作。当向前和向后滑动时,如何做同样的事情?

public class ScreenSlideActivity extends FragmentActivity {
private ViewPager2 mPager;
private FragmentStateAdapter pagerAdapter;
private Button btn_pular;
private Button btn_voltar;
ArrayList<Fragment> fragments = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_slide);
btn_pular = findViewById(R.id.btn_puler_pager);
btn_voltar = findViewById(R.id.btn_voltar_pager);
// Instantiate a ViewPager and a PagerAdapter.
mPager = findViewById(R.id.pager);
pagerAdapter = new ScreenSlidePagerAdapter(this, initiateFragments());
mPager.setAdapter(pagerAdapter);
mPager.setPageTransformer(new ZoomOutPageTransformer());
}
private ArrayList<Fragment> initiateFragments() {
fragments.add(ScreenSlidePageFragment2.newInstance());
fragments.add(ScreenSlidePageFragment1.newInstance());
fragments.add(ScreenSlidePageFragment3.newInstance());
return fragments;
}

public void onClickBtn_pular(View view) {
if (mPager.getCurrentItem() == 0)
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
alteraItems();
}
public void onClickVoltar(View view){
onBackPressed();
}
private void compartilha(){
}
private void alteraItems(){
if(mPager.getCurrentItem() == 0){
btn_pular.setBackgroundColor(getResources().getColor(R.color.branco));
}else{
btn_pular.setBackgroundColor(getResources().getColor(R.color.laranja));
}
}
private void gravaItems(){
//após gravar vai a pagina de compartilhamento
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
}
@Override
public void onBackPressed() {
if (mPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the system to handle the
// Back button. This calls finish() on this activity and pops the back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
mPager.setCurrentItem(mPager.getCurrentItem() - 1);
}
}
}

视图寻呼机:

public class ScreenSlidePagerAdapter extends FragmentStateAdapter {
private ArrayList<Fragment> fragments = new ArrayList<>();
private FragmentActivity fa;
public ScreenSlidePagerAdapter(FragmentActivity fa, ArrayList<Fragment> fragments) {
super(fa);
this.fa = fa;
this.fragments = fragments;
}

@NonNull
@Override
public Fragment createFragment(int position) {
return fragments.get(position);
}
@Override
public int getItemCount() {
return fragments.size();
}
}

我是根据谷歌为这样一个问题提供的文档来做的

要处理ViewPager2的滑动操作,需要添加一个OnPageChangedCallback。例如:

pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
//todo change your button color
}
})

最新更新