如何更改Android Material组件中的工具栏后退按钮图标

2024-04-19

我想将默认的向上导航图标(后退按钮图标)更改为我的自定义图标。我没有使用抽屉,只是一个简单的工具栏和材质组件

这可能吗?


如果您使用的是Toolbar to 更改图标只需使用:

Toolbar toolbar = findViewById(R.id.xxx);
toolbar.setNavigationIcon(R.drawable.xxxx4);
setSupportActionBar(toolbar);

如果您正在使用ActionBar您可以使用:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxx);

您还可以在您的应用程序主题中更改它homeAsUpIndicator属性:

  <style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
    <item name="homeAsUpIndicator">@drawable/...</item>
  </style>

如果您正在使用导航组件,目前没有办法自定义 HomeAsUpIndicator 图标,并且当您位于非 root 目标时,显示向上按钮是预期行为。
有一个解决方法添加addOnDestinationChangedListener在您的设置方法并检查目的地之后。
就像是:

navController.addOnDestinationChangedListener(
        new NavController.OnDestinationChangedListener() {
            @Override
            public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
                if (destination.getId() == R.id.nav_xxx) {
                    //With ActionBar                        
                    //getSupportActionBar().setHomeAsUpIndicator(R.drawable.xxxx);

                    //With a Toolbar
                    toolbar.setNavigationIcon(R.drawable.xxxx);
                }
            }
        });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改Android Material组件中的工具栏后退按钮图标 的相关文章

随机推荐

  • 你如何知道 NSURLSession 对象何时已被 iOS 失效?

    我在测试中发现一个错误 偶尔会收到以下 iOS 错误 标识符为 GUID 的后台 URLSession 已存在 即使我在每次测试后的清理调用中对 NSURLSession 调用 invalidateAndCancel 我正在寻找一种方法来等
  • 如何通过 SOAP API 禁用/停用 SalesForce 用户?

    我想使用 SOAP API 以编程方式禁用用户 我怎样才能做到这一点 我正在使用合作伙伴 API 并且拥有开发人员版本 我已设置管理用户权限 我已经经历过this http www salesforce com us developer d
  • 存储徽章标准的最佳方式?

    我一直在考虑如何在新网站上实现类似于SO的徽章功能 存储徽章标准的最佳方式是什么 两个想法 All code 第二系统 创建一个元架构来定义徽章及其标准 在数据库中存储一些信息 并让代码查询它以找出徽章及其标准 还有更好的方法吗 Rules
  • 如何实现 *object* 来改进我的时钟示例 javascript 程序

    这项工作的目标是理解和发挥某些意义object我听说过的概念 关于赏金 有很多不同的方式 方法可以做到这一点 My tries https stackoverflow com a 13219373 1765658不是很干净 为了添加第二个时
  • 在购物车页面上显示分级定价

    如果我在这个页面上 http 结账 购物车 对于购物车中的产品 我想显示分级定价 与商品页面上显示的定价相同 如果有 我的尝试是添加
  • 正则表达式查找第二个和第三个斜杠之间的文本

    我想捕获字符串中第二个斜杠之后和第三个斜杠之前出现的文本 例子 ip地址 数据库名称 我只需要捕获数据库名称 数据库名称可能包含字母 数字和下划线 谢谢 如何访问它取决于您的语言 但您基本上只需要一个捕获组来捕获第二个和第三个 之间的任何内
  • 以编程方式查找 Android 系统信息

    我正在尝试以编程方式查找 Android 设备的系统信息 具体来说 RAM 中央处理器速度 核心 架构等 是否有任何 Android 类指定此信息 我一直在使用 android board 库 但它似乎没有我想要的一切 让我告诉你我做了什么
  • gevent 无法在 OS X Capitan 上的 python 虚拟环境中安装

    我刚刚安装了 OS X Capitan 并尝试在 python2 7 x 虚拟环境中安装 gevent 这就是我得到的 看起来像是与 gcc 有关的东西 这是回溯 Building wheels for collected packages
  • 从部署配置中配置 Pod 的重启策略

    我们正在使用 Openshift Kubernetes 的托管版本 我正在努力将部署配置创建的所有 pod 的 pod 重启策略从 始终 设置为 从不 但我不确定 yaml 中的位置来做出这个改变 我们的部署配置如下所示 kind Depl
  • 如何在 Ruby 中一次读取一个文件?

    我想迭代读取文件中固定数量的字节 然后返回它们 我的代码如下 我从互联网上的一个例子中获取了它 File open textfile txt do file while buffer file read size do yield buff
  • 在目标检测中使用步长为 1 的最大池化层的目的是什么

    我正在使用单次探测器 SSD 更具体地说这个实现 https github com pierluigiferrari ssd keras在喀拉斯 当我检查 SSD300 时 正如我注意到的 这也适用于 SSD512 我注意到在每个卷积组之后
  • 在哪里可以读取 Visual Studio 2017 for Mac 中的控制台输出?

    安装了新的 Visual Studio Community for Mac 只是尝试运行一些现有的命令行应用程序 Console WriteLine 在 VisualStudio for Mac 上的哪里输出 可以在终端上重定向吗 谢谢 查
  • 系统调用超时?

    我正在使用 unix system 调用 Gunzip 和 gzip 文件 对于非常大的文件 有时 即在集群计算节点上 这些文件会被中止 而其他时候 即在登录节点上 它们会通过 系统调用可能花费的时间是否有一些软限制 还能是什么 调用线程应
  • 按第一行数字排序

    我有一个包含近 900 行的 Excel 文件 我已将其保存为制表符分隔的 txt 文件 我想按第一列中给出的数字 范围在 0 到 2250 之间 对文本文件进行排序 其他列都是数字和不同长度的字母 例如 我的文件 txt 0251 abc
  • paypal沙箱账户失败

    我正在尝试创建一个贝宝沙箱测试帐户 我填写了所有字段 提供了一个复杂的密码和 100 美元作为余额 在创建并检查帐户的配置文件后 我仍然收到错误消息 我们在创建此沙盒帐户时遇到了一些问题 请删除它并重试 PayPal 余额为 0 我已经尝试
  • 使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误

    我下载了 SwiftMailer 4 1 6 以使用 Gmail 发送电子邮件 我为此目的编写了以下代码
  • 如何从 Knockoutjs toJS() 中排除某些属性

    我有以下模型 var model A One B Two C Three 我将各种 UI 元素绑定到这些字段 效果很好 不过 我将模型转换回 JavaScript 对象 以便可以将任何更改保存到服务器 var goingToServer k
  • 用于 ListView 中多个视图的自定义 Android 适配器的 ArrayIndexOutOfBoundsException

    我正在尝试为 ListView 创建自定义适配器 因为列表中的每个项目都可以有不同的视图 链接 切换或单选组 但是当我尝试运行使用 ListView 的活动时 我收到错误并且应用程序停止 该应用程序针对Android 1 6平台 代码 pu
  • Python ImportError“无法导入名称'multiarray'

    我试图简单地将 numpy 导入到 python 脚本中 使用 PyCharm 称为 MatPlotLib py 但收到了这个奇怪的错误 它工作得很好 但后来我开始摆弄 Jupyter 我尝试卸载并重新安装 Python 然后系统恢复 但似
  • 如何更改Android Material组件中的工具栏后退按钮图标

    我想将默认的向上导航图标 后退按钮图标 更改为我的自定义图标 我没有使用抽屉 只是一个简单的工具栏和材质组件 这可能吗 如果您使用的是Toolbar to 更改图标只需使用 Toolbar toolbar findViewById R id