2017-01-09 7 views
0

Это вариант на знакомой проблеме (например, это: Setting action bar title in ViewPager)Установка начального заголовка панели инструментов, основанный на ViewPager при запуске

У меня есть настройки ViewPager в моей основной деятельности. ViewPager установлен для представления даты. Я установил его с помощью OnPageChangeListener и onPageListener, чтобы установить заголовок панели инструментов на заданную дату (по умолчанию при запуске будет текущая дата). onPageListener вызывается, но некоторое другое событие вызывается потом, и он устанавливает заголовок панели инструментов назад в указанное имя приложения. Даже если установить его явно в onCreate, это не исправляет заголовок, он по-прежнему заменяется именем приложения.

public class MainActivity extends AppCompatActivity { 

    private Toolbar toolbar; 
    private Date _displayedDate; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); 

     viewPager.setAdapter(new DatePagerAdapter(getSupportFragmentManager())); 
     viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      } 

      @Override 
      public void onPageSelected(int position) { 
       _displayedDate = DateUtils.offsetDate(position); 
       showDisplayedDate(); // no apparent effect 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

     _displayedDate = new Date(); 
     viewPager.setCurrentItem((int)DateUtils.getDayOffset(_displayedDate)); 
     showDisplayedDate(); // no apparent effect 
    } 

    public void showDisplayedDate() { 
     if (_displayedDate != null) { 
      toolbar.setTitle(_displayedDate.toString())); // simplified version of date display 
     } 
    } 
} 

public class DatePagerAdapter extends FragmentStatePagerAdapter 

Итак, что дает? Как установить заголовок на основе начального отображения ViewPager?

ответ

0

Как указано here, это снимает автоматическое название приложения на панели инструментов, а остальная часть логики заботится отображения даты:

getSupportActionBar().setDisplayShowTitleEnabled(false);