调用ActionBarDrawerToggle.setDrawerIndicatorEnabled后,向上箭头不显示(false)

Mar*_*991 16 android navigation-drawer

标题说明了一切.当我打电话给mDrawerToggle.setDrawerIndicatorEnabled(false)我时,我不想再显示" hamburger"图标,而是向后导航箭头.

不幸的是,当我调用此方法时,标题显示时没有向后箭头,也没有"汉堡包"图标.再次设置drawerIndicatorEnabled为true后,它再次显示"汉堡包"图标.

我设置getSupportActionBar().setDisplayHomeAsUpEnabled(true)getSupportActionBar().setDisplayShowHomeEnabled(true)

编辑: 基本上这里建议的解决方案:更改抽屉图标背对背箭头不知何故不给我后退箭头.

有谁知道这个问题的解决方案?非常感谢你!

afr*_*ish 37

经过数小时的试验和错误,我想出了一个解决方案,允许从"汉堡包"切换到"箭头"并返回.这是非常奇怪和不自然的,不要问我为什么它以这种方式工作,但它的工作原理.此外,这是唯一允许我这样做的解决方案,没有别的办法.

我只有一个片段活动.当我从一个片段切换到另一个片段时,我在我的活动中设置了布尔变量displayingInnerFragment.对于那些片段,displayingInnerFragment == true我在左上角显示"箭头",对于所有其他片段,我显示"汉堡包".我在切换到任何片段之前执行以下代码:

    ActionBar actionBar = getSupportActionBar();
    if (displayingInnerFragment) {
        actionBar.setDisplayHomeAsUpEnabled(false);
        drawerToggle.setDrawerIndicatorEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(true);
    } else {
        drawerToggle.setDrawerIndicatorEnabled(true);
    }
Run Code Online (Sandbox Code Playgroud)

注意actionBar.setDisplayHomeAsUpEnabled()在一个分支中的双重调用.这是drawerToggle.setDrawerIndicatorEnabled(false)工作所必需的.否则它将无法正常工作.所有其他选项要么不显示"箭头",要么在某个时刻隐藏"箭头"或"汉堡包".

  • 很高兴看到后退箭头,但它没有捕捉到点击,如何使用此显示的后退箭头返回到Backstack? (6认同)

小智 6

使用这样:

mDrawerToggle.setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerToggle.syncState();
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么答案被拒绝投票.对我来说,使用mDrawerToggle.syncState()添加行是一个解决方案. (3认同)

Pau*_*rke 4

这个问题困扰了我一段时间,因为我知道使用了默认的向上图标(通过查看 的来源ActionBarDrawerToggle),并且我希望它采用 的颜色设置R.attr.colorControlNormal。令人惊讶的是,这两行的顺序对于实际显示向上箭头至关重要:

mDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

setDrawerIndicatorEnabled必须在调用您ActionBarDrawerToggle 之前 setDisplayHomeAsUpEnabled调用您ActionBar。必须调用这两行才能显示默认(有色)箭头。