返回

Material Theme 中的返回箭头颜色自定义方法详解

Android

更改新 Material 主题中的返回箭头颜色

背景

在更新到 API 21 及以上版本后,Android 应用程序中的返回箭头变为指向左边的黑色箭头。虽然这种变化可以提高可访问性,但用户有时可能希望使用不同的颜色来匹配其应用程序的主题。

解决方案

修改返回箭头颜色的最简单方法是创建自己的 drawable。此方法提供了最大的灵活性,允许您自定义颜色、形状和大小。要创建自己的 drawable,请使用图像编辑软件或矢量绘图程序。

分步说明

  1. 使用图像编辑器或矢量绘图程序创建您自己的返回箭头。
  2. 将 drawable 保存为 PNG 或 SVG 文件。
  3. 将 drawable 添加到应用程序的 drawable 资源目录中。
  4. styles.xml 文件中,将 homeAsUpIndicator 属性设置为您的自定义 drawable。

代码示例

<resources>
    <drawable name="my_back_arrow" ... />
    
    <style name="AppTheme">
        <item name="homeAsUpIndicator">@drawable/my_back_arrow</item>
    </style>
</resources>

优点和缺点

创建自己的 drawable 的主要优点是可以完全控制返回箭头的外观。然而,这也可能是耗时的,特别是如果您需要针对不同的屏幕密度创建多个版本。

替代方法

另一种更改返回箭头颜色的方法是使用 setNavigationIcon() 方法。此方法允许您将任何 Drawable 对象设置为主工具栏的导航图标。要使用此方法,请执行以下步骤:

  1. 创建一个包含返回箭头的 Drawable 对象。
  2. onCreate() 方法中,使用 setNavigationIcon() 方法设置导航图标。

代码示例

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    
    Drawable backArrow = ContextCompat.getDrawable(this, R.drawable.my_back_arrow);
    toolbar.setNavigationIcon(backArrow);
}

使用 setNavigationIcon() 方法的主要优点是易于实现,并且不需要创建自定义 drawable。然而,它没有创建自定义 drawable 那么灵活。

结论

更改 Material 主题中的返回箭头颜色是一种简单但有效的自定义应用程序外观的方法。无论是创建自己的 drawable 还是使用 setNavigationIcon() 方法,都有一个选项可以满足您的需求。

常见问题解答

问:我可以将返回箭头更改为任何颜色吗?
答:是的,您可以使用上述方法将返回箭头更改为任何颜色。

问:我可以在不同的活动中使用不同的返回箭头吗?
答:是的,您可以在不同的活动中使用不同的返回箭头。只需在每个活动的 styles.xml 文件中为 homeAsUpIndicator 属性设置不同的 drawable。

问:我如何创建半透明的返回箭头?
答:要创建半透明的返回箭头,请使用图像编辑器或矢量绘图程序中的透明度设置。

问:我可以使用图片作为返回箭头吗?
答:是的,您可以使用图片作为返回箭头。只需将图片另存为 PNG 文件并将其添加到应用程序的 drawable 资源目录中。

问:我如何针对不同的屏幕密度创建多个返回箭头版本?
答:要针对不同的屏幕密度创建多个返回箭头版本,请使用 mipmap 目录。此目录允许您提供针对不同屏幕密度的不同大小的图像资源。