【问题标题】:Problems with Home button in the Toolbar工具栏中主页按钮的问题
【发布时间】:2015-07-10 20:14:31
【问题描述】:

我知道这是一个常见问题,但我尝试了 StackOverflow 的很多解决方案,并且任何解决方案都有效。

我想在工具栏中显示主页按钮,但它显示后退按钮或什么都不显示。

我尝试了不同的代码,例如:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);

现在我有了代码:

    setSupportActionBar(toolbar);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

它会显示返回按钮。

任何显示主页按钮的解决方案? 感谢您的帮助。

如果我的英语太差,我很抱歉。

【问题讨论】:

  • 你有 DrawerLayout/Toggle 吗?
  • 是的,我有一个 DrawerLayout
  • @ManelMendez 好的,您可以发布与 SupportActionBar、DrawerLayout 和切换相关的完整代码吗?
  • @HugoGresse 当然,这就够了吗?

标签: android android-studio android-actionbar toolbar android-toolbar


【解决方案1】:

您应该使用 DrawerToggle 来管理 DrawerLayout 的状态。

使用自定义图标确实不是实现此目的的好方法,您应该使用 Material Colors 来更改切换按钮的颜色。

这是一个工作示例:

        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar,  R.string.drawer_open, R.string.drawer_close) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);

                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
            }
        };


        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        mDrawerToggle.syncState();

【讨论】:

  • 哇,雨果好用!真的很感谢你,太完美了! :)
  • 我想我选择了这个作为答案,你能确认一下吗?
  • @ManelMendez 如果使用我的回答解决了问题,是的,您应该这样做。别忘了点赞。如果您判断问题或答案相关或有用,请点赞;)
  • 我还不能投票,因为我没有足够的声望,但是当我有声望时,我会投票赞成答案;)谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多