diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
index f9e25bc..0c4f902 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -369,8 +369,14 @@
 
     public void startEmojiPalettes(final String switchToAlphaLabel,
             final KeyVisualAttributes keyVisualAttr, final KeyboardIconsSet iconSet) {
-        mDeleteKey.setImageDrawable(iconSet.getIconDrawable(KeyboardIconsSet.NAME_DELETE_KEY));
-        mSpacebar.setImageDrawable(iconSet.getIconDrawable(KeyboardIconsSet.NAME_SPACE_KEY));
+        final int deleteIconResId = iconSet.getIconResourceId(KeyboardIconsSet.NAME_DELETE_KEY);
+        if (deleteIconResId != 0) {
+            mDeleteKey.setImageResource(deleteIconResId);
+        }
+        final int spacebarResId = iconSet.getIconResourceId(KeyboardIconsSet.NAME_SPACE_KEY);
+        if (spacebarResId != 0) {
+            mSpacebar.setImageResource(spacebarResId);
+        }
         final KeyDrawParams params = new KeyDrawParams();
         params.updateParams(mEmojiLayoutParams.getActionBarHeight(), keyVisualAttr);
         setupAlphabetKey(mAlphabetKeyLeft, switchToAlphaLabel, params);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
index 916c4e1..7146deb 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardIconsSet.java
@@ -89,6 +89,7 @@
     private static int NUM_ICONS = NAMES_AND_ATTR_IDS.length / 2;
     private static final String[] ICON_NAMES = new String[NUM_ICONS];
     private final Drawable[] mIcons = new Drawable[NUM_ICONS];
+    private final int[] mIconResourceIds = new int[NUM_ICONS];
 
     static {
         int iconId = ICON_UNDEFINED;
@@ -96,7 +97,7 @@
             final String name = (String)NAMES_AND_ATTR_IDS[i];
             final Integer attrId = (Integer)NAMES_AND_ATTR_IDS[i + 1];
             if (attrId != ATTR_UNDEFINED) {
-                ATTR_ID_TO_ICON_ID.put(attrId,  iconId);
+                ATTR_ID_TO_ICON_ID.put(attrId, iconId);
             }
             sNameToIdsMap.put(name, iconId);
             ICON_NAMES[iconId] = name;
@@ -113,6 +114,7 @@
                 setDefaultBounds(icon);
                 final Integer iconId = ATTR_ID_TO_ICON_ID.get(attrId);
                 mIcons[iconId] = icon;
+                mIconResourceIds[iconId] = keyboardAttrs.getResourceId(attrId, 0);
             } catch (Resources.NotFoundException e) {
                 Log.w(TAG, "Drawable resource for icon #"
                         + keyboardAttrs.getResources().getResourceEntryName(attrId)
@@ -137,8 +139,12 @@
         throw new RuntimeException("unknown icon name: " + name);
     }
 
-    public Drawable getIconDrawable(final String name) {
-        return getIconDrawable(getIconId(name));
+    public int getIconResourceId(final String name) {
+        final int iconId = getIconId(name);
+        if (isValidIconId(iconId)) {
+            return mIconResourceIds[iconId];
+        }
+        throw new RuntimeException("unknown icon name: " + name);
     }
 
     public Drawable getIconDrawable(final int iconId) {
