package org.solovyev.android.widget.menu; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.view.menu.ListMenuItemView; import android.util.Log; import java.lang.reflect.Field; final class ListMenuItemViewCompat { @Nullable private static Field preserveIconSpacingField; public static void setPreserveIconSpacing(@NonNull ListMenuItemView view, boolean preserveIconSpacing) { final Field field = getPreserveIconSpacingField(); if (field == null) { return; } try { field.set(view, preserveIconSpacing); } catch (IllegalAccessException e) { Log.e("CustomListMenuItemView", e.getMessage(), e); } } public static boolean getPreserveIconSpacing(@NonNull ListMenuItemView view) { final Field field = getPreserveIconSpacingField(); if (field == null) { return false; } try { return field.getBoolean(view); } catch (IllegalAccessException e) { Log.e("CustomListMenuItemView", e.getMessage(), e); return false; } } @Nullable private static Field getPreserveIconSpacingField() { if (preserveIconSpacingField != null) { return preserveIconSpacingField; } try { preserveIconSpacingField = ListMenuItemView.class.getDeclaredField("mPreserveIconSpacing"); preserveIconSpacingField.setAccessible(true); return preserveIconSpacingField; } catch (NoSuchFieldException e) { return null; } } }