ワシはワシが育てる

週刊少年ジャンプと任天堂のゲームが三度のメシより好きです。

アクションバーのカスタムレイアウトで余白を付ける

アクションバーのアイテムにカスタムレイアウトを設定するには以下のようにします。

<item android:actionLayout="@layout/hoge" />

ところがカスタムレイアウトは、素の状態では他のアイコンと並べると余白がなく窮屈になってしまいます。
原因はアクションバーのアイテムは32dpまでしか描画範囲しかない一方で、デフォルトでアイテムの横幅は56dpに設定されているのでその差の分だけ狭くなってしまうからです。

対策としてはカスタムレイアウトの中でpaddingを設定すればよいのですが、面倒なことにルート要素にpaddingを設定しても効きません。
中の要素に対してpaddingをかければ余白がつくので、以下のようにxmlを指定してあげます。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/hoge" />
</LinearLayout>