toolbar用setNavigationIcon()修改左侧图标为自己的图标无效的原因:
并非setNavigationIcon()是无效的。是因为放置这段代码位置的问题。
两种情况:
1、关联了DrawerLayout的toolbar。这个时候,单纯的在setSupportActionBar(titleBar);之后调用setNavigationIcon()来改变NavigationIcon是无效的。该是在关联完DrawerLayout之后,再setNavigationIcon()。源码为啥。等我这段时间忙完了看心情会解析一下。
titleBar.setTitle("");
setSupportActionBar(titleBar);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, titleBar, R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
titleBar.setNavigationIcon(R.drawable.activity_openreside);
2、不需关联DrawerLayout的toolbar。这个时候,只需在setSupportActionBar(titleBar);之后调用setNavigationIcon()来改变NavigationIcon即可。
titleBar.setTitle("");
setSupportActionBar(titleBar);
titleBar.setNavigationIcon(R.drawable.activity_openreside);
不需要关联时,toolbar怎么使用左侧NavigationIcon的点击事件呢?很简单setNavigationOnClickListener():
titleBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
注意最好别在xml里设置属性。这个由于toolbar的一些原因会导致设置无效。最好代码来实现。