2014-10-29 61 views
7

所以,我有一个BaseActivity,我有一个工具栏,我打电话setSupportActionBar(工具栏)。Android的工具栏setNavigationIcon无法正常工作

在我的一些扩展BaseActivity的活动中,我想将导航图标(默认箭头)更改为另一个drawable。但是当我调用toolbar.setNavigationIcon(myDrawable)它不起作用时,它仍然显示默认的左指向箭头图标。

有什么想法? 谢谢。

+0

可能重复:http://stackoverflow.com/questions/26525229/toolbar-navigation-icon-never-set – Abdellah 2014-10-29 21:56:26

回答

39

我想你可以设置像syncState后()

+2

WTF!?!?我永远不会发现这一点,你怎么知道这一点?如果我知道如何,我会给你一堆代表。 – Anthony 2015-05-01 21:49:21

+0

这只有(现在7)票。伟大的发现! – 2015-08-15 22:27:32

+0

很好的答案。无法相信它 – 2016-01-06 15:04:12

1

menuDrawerToggle = new ActionBarDrawerToggle(this, menuDrawer, toolbar, R.string.drawer_open, R.string.drawer_close){...} 

    menuDrawerToggle.syncState(); 

    toolbar.setNavigationIcon(getResources().getDrawable(yourDrawable)); 

放setNavigationIcon在我的情况:我不`吨使用ActionBarDrawerToggle。对我有帮助的是: 改变方法调用的顺序。

来源:

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar); 
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_24dp); 

要:

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar); 
toolbar.setNavigationIcon(R.drawable.ic_chevron_left_white_24dp); 
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 
0

在我的情况下,syncState后setNavigationIcon作为@Hsieh不行! 我的解决方案在onPostCreate方法中设置如下。 您的活动覆盖此方法

@Override 
    protected void onPostCreate(@Nullable Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mToolbar.setNavigationIcon(R.drawable.ic_menu_button); 
    } 
相关问题