0

4 조각을 보유하고있는 ViewPager가 있습니다. 내 하단 탐색 모음을 클릭하여 fragment1에서 fragment3 또는 fragment4로 전환하면 조각 사이에 항상 분량의 시간이 표시됩니다. 문제는 조각 2와 조각 3을 ​​전달하여 조각 4에 도달해야하는 것과 같습니다. 정상입니까? 그렇다면 애니메이션간에이를 비활성화하는 방법이 있습니까? 4 개 조각을 보유하고 내 집 활동조각 사이에 표시하지 않고 ViewPager 스위치

코드는 다음과 같습니다

/** 
* view pager. 
*/ 

public void setupViewPager(ViewPager viewPager){ 
    Log.d(TAG, "setupViewPager: setting up viewPager."); 
    SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new HomeFragment(), "HomeFragment"); 
    adapter.addFragment(new HashtagFragment(), "HashtagFragment"); 
    adapter.addFragment(new ChattingFragment(), "ChattingFragment"); 
    adapter.addFragment(new SettingFragment(), "SettingFragment"); 
    viewPager.setAdapter(adapter); 
} 


public void setViewPager(int fragmentNumber){ 

     mViewPager.setCurrentItem(fragmentNumber); 

} 



public void enableViewPagerSwitch(){ 

    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      if(bottomNavigationView.getMenu().getItem(position).isChecked()){ 
       bottomNavigationView.getMenu().getItem(position).setChecked(false); 
       Log.d(TAG, "onPageScrolled: position is " + position); 
      } 
     } 

     @Override 
     public void onPageSelected(int position) { 

      bottomNavigationView.getMenu().getItem(position).setChecked(true); 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

} 



/** 
* navigation bar. 
*/ 

private void setupBottomNavigationView(){ 
    Log.d(TAG, "setupBottomNavigationView: setting up Bottom navigation bar."); 
    BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationView); 
    Menu menu = bottomNavigationView.getMenu(); 
    MenuItem menuItem = menu.getItem(ACTIVITY_NUM); 
    menuItem.setChecked(true); 
} 

private void enableNavigation(){ 
    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 

      switch (item.getItemId()){ 
       case R.id.ic_home: 
        setViewPager(0); 
        break; 

       case R.id.ic_hashtag: 
        setViewPager(1); 
        break; 

       case R.id.ic_chat: 
        setViewPager(2); 
        break; 

       case R.id.ic_setting: 
        setViewPager(3); 
        break; 
      } 

      return false; 
     } 
    }); 

} 

ViewPager 어댑터 :

public class SectionsStatePagerAdapter extends FragmentStatePagerAdapter{ 

private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

public SectionsStatePagerAdapter(FragmentManager fm) { 
    super(fm); 

} 

public void addFragment(Fragment fragment, String title){ 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
} 

@Override 
public Fragment getItem(int position) { 
    return mFragmentList.get(position); 
} 

@Override 
public int getCount() { 
    return mFragmentList.size(); 
} 

감사합니다!

답변

1

당신은 두 번째 부울 항목으로 스크롤하지 ViewPager를 알려줍니다 ViewPager#setCurrentItem(position, false);

사용하지만, 즉시 표시 할 수 있습니다.

here

+0

문서를 확인하십시오! 고마워. – user8795747

관련 문제