Remove reference to system theme

This change also introduces
 * Background for space key preview
 * Tune stone theme

Change-Id: I84fca0baf2392582da870d2ff77b3e99c28faf7b
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 4395e97..73a8cd1 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
index 1388b66..fad0ec4 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
index 5a94cb6..215f815 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
index c6373a8..88acdd7 100644
--- a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
+++ b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
index af6082d..3e4eff6 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete.png b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
index 999a182..1d24cc8 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_delete.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
index 5c73600..512f460 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_mic.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_return.png b/java/res/drawable-hdpi/sym_bkeyboard_return.png
index 91bb397..426e159 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_return.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_return.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_search.png b/java/res/drawable-hdpi/sym_bkeyboard_search.png
index 0ac0814..1b6f884 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_search.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_search.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
index 5b6217a..08ba18f 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_settings.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift.png b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
index 5ef01b8..5a22dd3 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
index 7d36dcb..5664491 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_space.png b/java/res/drawable-hdpi/sym_bkeyboard_space.png
index 77518cc..cd0ebe2 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_space.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_space.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/java/res/drawable-hdpi/sym_bkeyboard_tab.png
index 5db4cef..3466e12 100644
--- a/java/res/drawable-hdpi/sym_bkeyboard_tab.png
+++ b/java/res/drawable-hdpi/sym_bkeyboard_tab.png
Binary files differ
diff --git a/java/res/layout/key_preview.xml b/java/res/layout/key_preview.xml
index 5332d15..b620d07 100644
--- a/java/res/layout/key_preview.xml
+++ b/java/res/layout/key_preview.xml
@@ -24,5 +24,4 @@
     android:textSize="40sp"
     android:minWidth="32dip"
     android:gravity="center"
-    style="?attr/keyPreviewStyle"
     />
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 6dabb0c..351be28 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -22,7 +22,6 @@
         <attr name="latinKeyboardStyle" format="reference" />
         <!-- KeyboardView style -->
         <attr name="keyboardViewStyle" format="reference" />
-        <attr name="keyPreviewStyle" format="reference" />
         <!-- PopupMiniKeyboardView style -->
         <attr name="popupMiniKeyboardViewStyle" format="reference" />
         <attr name="popupMiniKeyboardPanelStyle" format="reference" />
@@ -70,6 +69,12 @@
 
         <!-- Layout resource for key press feedback.-->
         <attr name="keyPreviewLayout" format="reference" />
+        <!-- The background for key press feedback. -->
+        <attr name="keyPreviewBackground" format="reference" />
+        <!-- The background for spacebar press feedback. -->
+        <attr name="keyPreviewSpacebarBackground" format="reference" />
+        <!-- The text color for key press feedback. -->
+        <attr name="keyPreviewTextColor" format="color" />
         <!-- Vertical offset of the key press feedback from the key. -->
         <attr name="keyPreviewOffset" format="dimension" />
         <!-- Height of the key press feedback popup. -->
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 0dd1be3..c1ef869 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -30,8 +30,6 @@
     <dimen name="popup_key_height">0.330in</dimen>
     <dimen name="keyboard_top_padding">0.00in</dimen>
     <dimen name="keyboard_bottom_padding">0.06in</dimen>
-    <dimen name="key_bottom_gap_stone">0.00in</dimen>
-    <dimen name="key_horizontal_gap_stone">0.00in</dimen>
     <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
     <dimen name="mini_keyboard_horizontal_padding">16dip</dimen>
     <dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen>
diff --git a/java/res/values/keyboard-icons-black.xml b/java/res/values/keyboard-icons-black.xml
index 89631bb..4144b64 100644
--- a/java/res/values/keyboard-icons-black.xml
+++ b/java/res/values/keyboard-icons-black.xml
@@ -15,7 +15,7 @@
 -->
 
 <resources>
-    <style name="KeyboardIcons.Black" parent="android:Theme.Light">
+    <style name="KeyboardIcons.Black">
         <!-- Keyboard icons -->
         <item name="iconShiftKey">@drawable/sym_bkeyboard_shift</item>
         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_bkeyboard_123_mic</item>
@@ -34,8 +34,8 @@
         <!-- LatinKeyboard icons -->
         <item name="autoCorrectionSpacebarLedIcon">@drawable/sym_keyboard_space_led</item>
         <item name="disabledShortcutIcon">@drawable/sym_keyboard_voice_off_holo</item>
-        <item name="spacebarArrowLeftIcon">@drawable/sym_keyboard_language_arrows_left</item>
-        <item name="spacebarArrowRightIcon">@drawable/sym_keyboard_language_arrows_right</item>
+        <item name="spacebarArrowLeftIcon">@null</item>
+        <item name="spacebarArrowRightIcon">@null</item>
         <item name="spacebarArrowPreviewLeftIcon">@drawable/sym_keyboard_feedback_language_arrows_left</item>
         <item name="spacebarArrowPreviewRightIcon">@drawable/sym_keyboard_feedback_language_arrows_right</item>
     </style>
diff --git a/java/res/values/keyboard-icons-ics.xml b/java/res/values/keyboard-icons-ics.xml
index feb95f8..86fb7bb 100644
--- a/java/res/values/keyboard-icons-ics.xml
+++ b/java/res/values/keyboard-icons-ics.xml
@@ -15,7 +15,7 @@
 -->
 
 <resources>
-    <style name="KeyboardIcons.IceCreamSandwich" parent="android:Theme.Holo">
+    <style name="KeyboardIcons.IceCreamSandwich">
         <!-- Keyboard icons -->
         <!-- TODO: The following holo icon for phone (drawable-hdpi and drawable-xhdpi) are too
              large for phone.
diff --git a/java/res/values/keyboard-icons-white.xml b/java/res/values/keyboard-icons-white.xml
index f9726d1..63df284 100644
--- a/java/res/values/keyboard-icons-white.xml
+++ b/java/res/values/keyboard-icons-white.xml
@@ -15,7 +15,7 @@
 -->
 
 <resources>
-    <style name="KeyboardIcons" parent="android:Theme">
+    <style name="KeyboardIcons">
         <!-- Keyboard icons -->
         <item name="iconShiftKey">@drawable/sym_keyboard_shift</item>
         <item name="iconToSymbolKeyWithShortcut">@drawable/sym_keyboard_123_mic</item>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index ff91e9e..07a7f3c 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -51,6 +51,9 @@
         <item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item>
         <item name="keyPopupHintIcon">@drawable/hint_popup</item>
         <item name="keyPreviewLayout">@layout/key_preview</item>
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback</item>
+        <item name="keyPreviewSpacebarBackground">@drawable/keyboard_key_feedback</item>
+        <item name="keyPreviewTextColor">#FFFFFFFF</item>
         <item name="keyPreviewOffset">@dimen/key_preview_offset</item>
         <item name="keyPreviewHeight">@dimen/key_preview_height</item>
         <item name="keyPreviewTextRatio">@fraction/key_preview_text_ratio</item>
@@ -61,10 +64,6 @@
         <item name="shadowRadius">2.75</item>
         <item name="backgroundDimAmount">0.5</item>
     </style>
-    <style name="KeyPreviewStyle">
-        <item name="android:background">@drawable/keyboard_key_feedback</item>
-        <item name="android:textColor">#FFFFFFFF</item>
-    </style>
     <style name="PopupMiniKeyboardView" parent="KeyboardView">
         <item name="keyBackground">@drawable/btn_keyboard_key_popup</item>
         <item name="keyHysteresisDistance">0dip</item>
@@ -99,18 +98,18 @@
     </style>
     <!-- Theme "Stone" -->
     <style name="Keyboard.Stone" parent="Keyboard">
-        <item name="horizontalGap">@dimen/key_horizontal_gap_stone</item>
-        <item name="verticalGap">@dimen/key_bottom_gap_stone</item>
+        <item name="horizontalGap">@dimen/key_horizontal_gap</item>
+        <item name="verticalGap">@dimen/key_bottom_gap</item>
     </style>
     <style name="LatinKeyboard.Stone" parent="LatinKeyboard">
-        <item name="spacebarTextColor">#FF444444</item>
-        <item name="spacebarTextShadowColor">#80FFFFFF</item>
+        <item name="spacebarTextColor">#FF000000</item>
+        <item name="spacebarTextShadowColor">#D0FFFFFF</item>
     </style>
     <style name="KeyboardView.Stone" parent="KeyboardView">
         <item name="keyBackground">@drawable/btn_keyboard_key_stone</item>
         <item name="keyTextColor">#FF000000</item>
         <item name="keyTextInactivatedColor">#FF808080</item>
-        <item name="keyHintLetterColor">#80FFFFFF</item>
+        <item name="keyHintLetterColor">#80000000</item>
         <item name="keyHintLabelColor">#E0000000</item>
         <item name="keyUppercaseLetterInactivatedColor">#66000000</item>
         <item name="keyUppercaseLetterActivatedColor">#CC000000</item>
@@ -153,14 +152,14 @@
         <item name="keyHintLabelColor">#A0FFFFFF</item>
         <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
         <item name="keyUppercaseLetterActivatedColor">#FFFFFFFF</item>
+        <item name="keyPreviewBackground">@drawable/keyboard_key_feedback_ics</item>
+        <item name="keyPreviewSpacebarBackground">@drawable/transparent</item>
+        <item name="keyPreviewTextColor">#FFFFFFFF</item>
         <item name="keyPreviewHeight">@dimen/key_preview_height_ics</item>
         <item name="keyPreviewOffset">@dimen/key_preview_offset_ics</item>
         <item name="shadowColor">#00000000</item>
         <item name="shadowRadius">0.0</item>
     </style>
-    <style name="KeyPreviewStyle.IceCreamSandwich">
-        <item name="android:background">@drawable/keyboard_key_feedback_ics</item>
-    </style>
     <style name="PopupMiniKeyboardView.IceCreamSandwich" parent="PopupMiniKeyboardView">
         <item name="android:background">@null</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
diff --git a/java/res/values/themes-basic-highcontrast.xml b/java/res/values/themes-basic-highcontrast.xml
index 8122e4e..820f962 100644
--- a/java/res/values/themes-basic-highcontrast.xml
+++ b/java/res/values/themes-basic-highcontrast.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.HighContrast</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
diff --git a/java/res/values/themes-basic.xml b/java/res/values/themes-basic.xml
index 50b52de..18cae4e 100644
--- a/java/res/values/themes-basic.xml
+++ b/java/res/values/themes-basic.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
diff --git a/java/res/values/themes-gingerbread.xml b/java/res/values/themes-gingerbread.xml
index cdb10c8..091baa7 100644
--- a/java/res/values/themes-gingerbread.xml
+++ b/java/res/values/themes-gingerbread.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 33c4081..97c5944 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard.IceCreamSandwich</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard.IceCreamSandwich</item>
         <item name="keyboardViewStyle">@style/KeyboardView.IceCreamSandwich</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle.IceCreamSandwich</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.IceCreamSandwich</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle.IceCreamSandwich</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle.IceCreamSandwich</item>
diff --git a/java/res/values/themes-stone-bold.xml b/java/res/values/themes-stone-bold.xml
index 6589807..d33e6bf 100644
--- a/java/res/values/themes-stone-bold.xml
+++ b/java/res/values/themes-stone-bold.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard.Stone</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Stone.Bold</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
diff --git a/java/res/values/themes-stone.xml b/java/res/values/themes-stone.xml
index a8608f6..230b2ca 100644
--- a/java/res/values/themes-stone.xml
+++ b/java/res/values/themes-stone.xml
@@ -19,7 +19,6 @@
         <item name="keyboardStyle">@style/Keyboard.Stone</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard.Stone</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Stone</item>
-        <item name="keyPreviewStyle">@style/KeyPreviewStyle</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Stone</item>
         <item name="popupMiniKeyboardPanelStyle">@style/PopupMiniKeyboardPanelStyle</item>
         <item name="suggestionsStripBackgroundStyle">@style/SuggestionsStripBackgroundStyle</item>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 8ca6ade..840e528 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -118,6 +118,10 @@
     private final float mBackgroundDimAmount;
     private final float mKeyHysteresisDistance;
     private final float mVerticalCorrection;
+    private final Drawable mPreviewBackground;
+    private final Drawable mPreviewSpacebarBackground;
+    private final int mPreviewTextColor;
+    private final float mPreviewTextRatio;
     private final int mPreviewOffset;
     private final int mPreviewHeight;
     private final int mPopupLayout;
@@ -138,9 +142,7 @@
 
     // Key preview
     private boolean mInForeground;
-    private TextView mPreviewText;
-    private Drawable mPreviewBackground;
-    private float mPreviewTextRatio;
+    private final TextView mPreviewText;
     private int mPreviewTextSize;
     private boolean mShowKeyPreviewPopup = true;
     private final int mDelayBeforePreview;
@@ -342,7 +344,18 @@
                 R.styleable.KeyboardView_keyHysteresisDistance, 0);
         mVerticalCorrection = a.getDimensionPixelOffset(
                 R.styleable.KeyboardView_verticalCorrection, 0);
+        mPreviewTextColor = a.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0);
         final int previewLayout = a.getResourceId(R.styleable.KeyboardView_keyPreviewLayout, 0);
+        if (previewLayout != 0) {
+            mPreviewText = (TextView) LayoutInflater.from(context).inflate(previewLayout, null);
+            mPreviewText.setTextColor(mPreviewTextColor);
+        } else {
+            mPreviewText = null;
+            mShowKeyPreviewPopup = false;
+        }
+        mPreviewBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewBackground);
+        mPreviewSpacebarBackground = a.getDrawable(
+                R.styleable.KeyboardView_keyPreviewSpacebarBackground);
         mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
         mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80);
         mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
@@ -374,12 +387,6 @@
 
         final Resources res = getResources();
 
-        if (previewLayout != 0) {
-            mPreviewText = (TextView) LayoutInflater.from(context).inflate(previewLayout, null);
-            mPreviewBackground = mPreviewText.getBackground();
-        } else {
-            mShowKeyPreviewPopup = false;
-        }
         mDelayBeforePreview = res.getInteger(R.integer.config_delay_before_preview);
         mDelayAfterPreview = res.getInteger(R.integer.config_delay_after_preview);
         mKeyLabelHorizontalPadding = (int)res.getDimension(
@@ -1010,7 +1017,7 @@
             previewText.setText(null);
         }
         if (key.mCode == Keyboard.CODE_SPACE) {
-            previewText.setBackgroundColor(Color.TRANSPARENT);
+            previewText.setBackgroundDrawable(mPreviewSpacebarBackground);
         } else {
             previewText.setBackgroundDrawable(mPreviewBackground);
         }
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 00bf348..1966d2d 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -216,8 +216,12 @@
     // Layout local language name and left and right arrow on spacebar.
     private static String layoutSpacebar(Paint paint, Locale locale, Drawable icon, Drawable lArrow,
             Drawable rArrow, int width, int height, float origTextSize) {
-        final float arrowWidth = lArrow.getIntrinsicWidth();
-        final float arrowHeight = lArrow.getIntrinsicHeight();
+        final float arrowWidth;
+        if (lArrow != null && rArrow != null) {
+            arrowWidth = lArrow.getIntrinsicWidth();
+        } else {
+            arrowWidth = 0;
+        }
         final float maxTextWidth = width - (arrowWidth + arrowWidth);
         final Rect bounds = new Rect();
 
@@ -251,14 +255,17 @@
         paint.setTextSize(textSize);
 
         // Place left and right arrow just before and after language text.
-        final float textHeight = -paint.ascent() + paint.descent();
-        final float baseline = (icon != null) ? height * SPACEBAR_LANGUAGE_BASELINE
-                : height / 2 + textHeight / 2;
-        final int top = (int)(baseline - arrowHeight);
-        final float remains = (width - textWidth) / 2;
-        lArrow.setBounds((int)(remains - arrowWidth), top, (int)remains, (int)baseline);
-        rArrow.setBounds((int)(remains + textWidth), top, (int)(remains + textWidth + arrowWidth),
-                (int)baseline);
+        if (lArrow != null && rArrow != null) {
+            final float textHeight = -paint.ascent() + paint.descent();
+            final float baseline = (icon != null) ? height * SPACEBAR_LANGUAGE_BASELINE
+                    : height / 2 + textHeight / 2;
+            final int arrowHeight = lArrow.getIntrinsicHeight();
+            final int top = (int)(baseline - arrowHeight);
+            final float remains = (width - textWidth) / 2;
+            lArrow.setBounds((int)(remains - arrowWidth), top, (int)remains, (int)baseline);
+            rArrow.setBounds((int)(remains + textWidth), top,
+                    (int)(remains + textWidth + arrowWidth), (int)baseline);
+        }
 
         return language;
     }
@@ -323,7 +330,8 @@
             // Put arrows that are already laid out on either side of the text
             // Because language switch is disabled on phone and number layouts, hide arrows.
             // TODO: Sort out how to enable language switch on these layouts.
-            if (mSubtypeSwitcher.useSpacebarLanguageSwitcher()
+            if (mSpacebarArrowLeftIcon != null && mSpacebarArrowRightIcon != null
+                    && mSubtypeSwitcher.useSpacebarLanguageSwitcher()
                     && mSubtypeSwitcher.getEnabledKeyboardLocaleCount() > 1
                     && !(isPhoneKeyboard() || isNumberKeyboard())) {
                 mSpacebarArrowLeftIcon.setColorFilter(getSpacebarDrawableFilter(textFadeFactor));
diff --git a/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java
index f8c81ad..78a3a7e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/SlidingLocaleDrawable.java
@@ -70,12 +70,15 @@
         mTextPaint = textPaint;
         mMiddleX = (background != null) ? (mWidth - mBackground.getIntrinsicWidth()) / 2 : 0;
 
-        final TypedArray a = context.obtainStyledAttributes(
+        final TypedArray lka = context.obtainStyledAttributes(
                 null, R.styleable.LatinKeyboard, R.attr.latinKeyboardStyle, R.style.LatinKeyboard);
-        mSpacebarTextColor = a.getColor(R.styleable.LatinKeyboard_spacebarTextColor, 0);
-        mLeftDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon);
-        mRightDrawable = a.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon);
-        a.recycle();
+        mLeftDrawable = lka.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewLeftIcon);
+        mRightDrawable = lka.getDrawable(R.styleable.LatinKeyboard_spacebarArrowPreviewRightIcon);
+        lka.recycle();
+        final TypedArray kva = context.obtainStyledAttributes(
+                null, R.styleable.KeyboardView, R.attr.keyboardViewStyle, R.style.KeyboardView);
+        mSpacebarTextColor = kva.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0);
+        kva.recycle();
 
         mThreshold = ViewConfiguration.get(context).getScaledTouchSlop();
     }