【问题标题】:Setting the initial toolbar title based on ViewPager on startup启动时根据 ViewPager 设置初始工具栏标题
【发布时间】:2017-01-09 21:20:16
【问题描述】:

这是一个熟悉问题的变体(例如:Setting action bar title in ViewPager

我的主要活动中有一个 ViewPager 设置。 ViewPager 设置为表示日期。我用OnPageChangeListeneronPageListener 设置了它以将工具栏标题设置为给定日期(启动时的默认设置为当前日期)。 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 的初始显示设置标题?

【问题讨论】:

    标签: android android-viewpager android-toolbar


    【解决方案1】:

    here 所述,这将删除工具栏中的自动应用标题,其余逻辑负责显示日期:

    getSupportActionBar().setDisplayShowTitleEnabled(false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2022-11-03
      相关资源
      最近更新 更多