【Android】ToolBar设置NavigationIcon不显示异常或自定义失败异常

在Android开发中遇到ToolBar的NavigationIcon无法显示的问题,无论是在XML布局中设置还是代码中设置都不生效。解决办法是避免在XML中设置,确保在初始化ToolBar后并在其他自定义设置之前调用setNavigationIcon()方法,并且需要使用setSupportActionBar()将ToolBar设置为ActionBar的替代品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常:

在布局XML中设置android:navigationIcon=”@drawable/icon”或者在代码中设置都无法自定义成自己需要设置的NavigationIcon图片。
代码设置NavigationIcon如下:

Toolbar toolbar = (Toolbar)findViewById(R.id.my_toolbar);
toolbar.setNavigationIcon(R.drawable.icon);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);
setSupportActionBar(toolbar);

解决办法:

如果你在XML布局中设置ToolBar设置NavigationIcon,那么现在需要放弃这种做法,否者始终无法显示出你设置的NavigationIcon,至于原因目前我还不知道,如果你知道的话,欢迎告诉我一下,万分感谢;
如果你在代码中设置的ToolBar的NavigationIcon,结果却还是没有显示你需要的NavigationIcon,那么你需要着重检查一下,你是否有 setSupportActionBar(toolbar); 这句代码,否者你在代码中对toolbar所做的设置是无法应用到ToolBar中的,另外很重要的一点就是:setSupportActionBar(toolbar); 必须在ToolBar初始化之后,setNavigationIcon()以及各种自定义ToolBar设置(例如:toolbar.setTitle("Title");)之前,否者同样无法将设置应用到ToolBar之上。
至于setSupportActionBar(toolbar);这句代码的作用,其实就是将你的ToolBar设置到ActionBar上,替换掉它。
正确代码如下(可以和异常中的代码比较一下):

Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(toolbar);

toolbar.setNavigationIcon(R.drawable.icon);
toolbar.setTitle("Title");
toolbar.setSubtitle("Sub");
toolbar.setLogo(R.drawable.ic_launcher);

参考链接:

http://stackoverflow.com/questions/26525229/toolbar-navigation-icon-never-set

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值