Android 基于启动时的ViewPager设置初始工具栏标题
这是一个常见问题的变体(例如:) 我的主要活动中有一个ViewPager设置。ViewPager设置为表示日期。我已经用Android 基于启动时的ViewPager设置初始工具栏标题,android,android-viewpager,android-toolbar,Android,Android Viewpager,Android Toolbar,这是一个常见问题的变体(例如:) 我的主要活动中有一个ViewPager设置。ViewPager设置为表示日期。我已经用OnPageChangeListener和onPageListener将工具栏标题设置为给定日期(启动时默认为当前日期)onPageListener,但随后调用了其他一些事件,并将工具栏标题设置回定义的应用程序名称。即使在活动的onCreate中显式设置它也不能修复标题,它仍然会被应用程序名替换 public class MainActivity extends AppComp
OnPageChangeListener
和onPageListener
将工具栏标题设置为给定日期(启动时默认为当前日期)<调用了code>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的初始显示设置标题?如上所述,这将删除工具栏中的自动应用程序标题,其余逻辑负责显示日期:
getSupportActionBar().setDisplayShowTitleEnabled(false);