2015-04-21 2 views
2

У меня есть активность с пейджером-адаптером, который содержит некоторые фрагменты. Я также создал progressBar (горизонтальный) в верхней части действия. Мне нужно, чтобы бар показывал прогресс, когда я пробирался сквозь фрагменты. Например, он должен быть серым, когда я нахожусь в первом фрагменте, а затем постепенно увеличиваюсь, когда я прокручиваю фрагменты и полностью зеленый, когда я нахожусь в последнем фрагменте.Как показать прогресс при прокрутке фрагментов?

mainActivity.java

public class testActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pager_adapter); 
     initialisePaging(); 
    } 

    private void initialisePaging() { 
     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this,fragment1.class.getName())); 
     fragments.add(Fragment.instantiate(this,fragment2.class.getName())); 
     fragments.add(Fragment.instantiate(this,fragment3.class.getName())); 
     PagerAdapter mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments); 

     ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
     pager.setAdapter(mPagerAdapter); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_test, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

} 

PagerAdapter.java

public class PagerAdapter extends FragmentPagerAdapter { 

    private List<Fragment> fragments; 

    public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     return this.fragments.get(arg0); 
    } 

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

    public void setFragments(List<Fragment> fragments) { 
     this.fragments = fragments; 
    } 
} 

ответ

1

На самом деле я нашел очень простой ответ. Это то, что я сделал:

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 

     } 

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

     } 

     @Override 
     public void onPageSelected(int pos) { 
      //This is because progress is 0 at the start of the program 
      progress++; 
      ProgressBar progress = (ProgressBar) findViewById(R.id.progressBar); 
       progress.setProgress(position++); 
     } 

    }); 
1

Вам нужно добавить OnPageChangeListener вам ViewPager в вашей деятельности, как это

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 

    } 

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

    } 

    @Override 
    public void onPageSelected(int pos) { 
     // Update the progress bar according to pos 
     // Also note that you reach the end when pos == mPagerAdapter.getCount() - 1 
     // and that pos starts at 0 - this is the first fragment 
    } 

}); 
+0

Что следует написать после onPageSelected? – Kaspis245

+0

Вы должны менять цвет своего индикатора выполнения. Создайте массив цветов int или идентификаторов цвета res и получите цвет для позиции и установите его в панель peogress. Ты можешь сделать это? –

+0

Не совсем. Но я попытаюсь. – Kaspis245

Смежные вопросы