Align space key icon to bottom of a key

The Key.keyLabelFlags's flag "alignButtom" (misspelled) has been
removed by Iae3cd66744. This CL re-introduce the same flag with
"alignIconToBottom".

Bug: 16803172
Change-Id: I412590f394c6ca9b36358d6acfe8675071403bdd
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index e6215c2..37ba396 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -292,6 +292,7 @@
         <!-- The key label flags. -->
         <attr name="keyLabelFlags" format="integer">
             <!-- This should be aligned with Key.LABEL_FLAGS__* -->
+            <flag name="alignIconToBottom" value="0x04" />
             <flag name="alignLeftOfCenter" value="0x08" />
             <flag name="fontNormal" value="0x10" />
             <flag name="fontMonoSpace" value="0x20" />
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index f754b99..3038097 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -120,6 +120,7 @@
     <key-style
         latin:styleName="numSpaceKeyStyle"
         latin:keySpec="!icon/space_key_for_number_layout|!code/key_space"
+        latin:keyLabelFlags="alignIconToBottom"
         latin:keyActionFlags="enableLongPress"
         latin:parentStyle="numKeyBaseStyle" />
 </merge>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 55ce7dd..aaa55d7 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -58,6 +58,7 @@
     private final String mHintLabel;
     /** Flags of the label */
     private final int mLabelFlags;
+    private static final int LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM = 0x04;
     private static final int LABEL_FLAGS_ALIGN_LEFT_OF_CENTER = 0x08;
     // Font typeface specification.
     private static final int LABEL_FLAGS_FONT_MASK = 0x30;
@@ -643,6 +644,10 @@
         return Typeface.DEFAULT_BOLD;
     }
 
+    public final boolean isAlignIconToBottom() {
+        return (mLabelFlags & LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM) != 0;
+    }
+
     public final boolean isAlignLeftOfCenter() {
         return (mLabelFlags & LABEL_FLAGS_ALIGN_LEFT_OF_CENTER) != 0;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 5af0be6..4a791f3 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -456,9 +456,13 @@
                 iconWidth = Math.min(icon.getIntrinsicWidth(), keyWidth);
             }
             final int iconHeight = icon.getIntrinsicHeight();
-            // Align center.
-            final int iconY = (keyHeight - iconHeight) / 2;
-            final int iconX = (keyWidth - iconWidth) / 2;
+            final int iconY;
+            if (key.isAlignIconToBottom()) {
+                iconY = keyHeight - iconHeight;
+            } else {
+                iconY = (keyHeight - iconHeight) / 2; // Align vertically center.
+            }
+            final int iconX = (keyWidth - iconWidth) / 2; // Align horizontally center.
             drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
         }