原文by Norman Peitek 翻译by Dexter0218
如何添加Actionbar菜单图标的边距
在上篇文章中,我们看了一个只有一个菜单项的简单的Actionbar:

a simple actionbar
我们在菜单资源文件中设置菜单项图标:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_delete"
android:icon="@android:drawable/ic_delete"
android:title="Delete"
app:showAsAction="ifRoom"/>
</menu>
然而,我们假设我们的设计师并不知道这个图标应该设计多大。他希望它更小。让然,你可能再次需要这个drawable,只是一个更小的分辨率的才能解决问题。技术上它可以获得你想要的结果,但我们不推荐使用此方法。很难去预测它在不同的设备上会变成什么样子,并且很容易让这个图标看到像素点。
更好的方法是使用一个高分辨率的图标,但为它添加padding。不幸地,Android并不直接支持在菜单项里声明。
你需要的是创建一个新的XML drawable,例如/drawable/delete_with_padding.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<bitmap android:src="@android:drawable/ic_delete"/>
</item>
</layer-list>
这个XML drawable会有四个边距项,每个代表一个方向。最后我们使用原来的菜单项声明位图中使用的图标。显然,如果你需要,你可以调整4dp的边距值。最后一步是使用这个新的/drawable/delete_with_padding.xml
作为你的Actionbar菜单项图标:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/action_delete"
android:icon="@drawable/delete_with_padding"
android:title="Delete"
app:showAsAction="ifRoom"/>
</menu>
Menu Item: 4dp Padding

Menu Item: 4dp Padding
Menu Item: 8dp Padding

Menu Item: 8dp Padding
这个方法会允许你为你的Actionbar菜单图标添加边距,而不需要动图标资源!
我们希望这对你有用!如果你有其他tips分享,欢迎在下面的评论里留言~!