Merge "Use PrevWordsInfo for get/add/remove n-gram(bigram) entry."
diff --git a/java/res/color/emoji_tab_label_color_holo.xml b/java/res/color/emoji_tab_label_color_holo.xml
deleted file mode 100644
index 373e931..0000000
--- a/java/res/color/emoji_tab_label_color_holo.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:state_pressed="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:state_selected="true"
-        android:color="@color/key_text_color_holo" />
-    <item
-        android:color="@color/key_text_inactivated_color_holo" />
-</selector>
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
deleted file mode 100644
index 84e63df..0000000
--- a/java/res/drawable-hdpi/emoji_category_tab_selected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..9138cef
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..345d05e
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_selected_lxx_dark.9.png b/java/res/drawable-hdpi/emoji_category_tab_selected_lxx_dark.9.png
new file mode 100644
index 0000000..ca981f4
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/emoji_category_tab_unselected_lxx_dark.9.png b/java/res/drawable-hdpi/emoji_category_tab_unselected_lxx_dark.9.png
new file mode 100644
index 0000000..10b1dd2
--- /dev/null
+++ b/java/res/drawable-hdpi/emoji_category_tab_unselected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..1c937c9
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..3508d24
--- /dev/null
+++ b/java/res/drawable-hdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_activated_holo_dark.png
rename to java/res/drawable-hdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png b/java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-hdpi/ic_emoji_recent_normal_holo_dark.png
rename to java/res/drawable-hdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
index 6a76ce6..9d6514b 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
deleted file mode 100644
index 752c758..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
deleted file mode 100644
index a24519f..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
index f3c2f6b..8ad54f6 100644
--- a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
+++ b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
deleted file mode 100644
index 0a9e467..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
deleted file mode 100644
index 6a58ed3..0000000
--- a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..108eb74
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..141f5ad
--- /dev/null
+++ b/java/res/drawable-hdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
deleted file mode 100644
index 4b00f35..0000000
--- a/java/res/drawable-mdpi/emoji_category_tab_selected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..1731b46
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..6354b99
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_selected_lxx_dark.9.png b/java/res/drawable-mdpi/emoji_category_tab_selected_lxx_dark.9.png
new file mode 100644
index 0000000..a08735c
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/emoji_category_tab_unselected_lxx_dark.9.png b/java/res/drawable-mdpi/emoji_category_tab_unselected_lxx_dark.9.png
new file mode 100644
index 0000000..4cf8f5c
--- /dev/null
+++ b/java/res/drawable-mdpi/emoji_category_tab_unselected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..c7394e1
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..eb4dab4
--- /dev/null
+++ b/java/res/drawable-mdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_activated_holo_dark.png
rename to java/res/drawable-mdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png b/java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-mdpi/ic_emoji_recent_normal_holo_dark.png
rename to java/res/drawable-mdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
index 0173d09..d320092 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
deleted file mode 100644
index 6d89549..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
deleted file mode 100644
index a459d42..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
index 5c00e7e..60a3633 100644
--- a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
+++ b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
deleted file mode 100644
index f85dd03..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
deleted file mode 100644
index 83d72a2..0000000
--- a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..9c89031
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..926c363
--- /dev/null
+++ b/java/res/drawable-mdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
deleted file mode 100644
index 95e5f43..0000000
--- a/java/res/drawable-xhdpi/emoji_category_tab_selected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..11bc966
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..5e8549b
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_selected_lxx_dark.png b/java/res/drawable-xhdpi/emoji_category_tab_selected_lxx_dark.png
new file mode 100644
index 0000000..65a54b8
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_selected_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/emoji_category_tab_unselected_lxx_dark.9.png b/java/res/drawable-xhdpi/emoji_category_tab_unselected_lxx_dark.9.png
new file mode 100644
index 0000000..666b354
--- /dev/null
+++ b/java/res/drawable-xhdpi/emoji_category_tab_unselected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..997c9b7
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..23a519c
--- /dev/null
+++ b/java/res/drawable-xhdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_activated_holo_dark.png
rename to java/res/drawable-xhdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png b/java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xhdpi/ic_emoji_recent_normal_holo_dark.png
rename to java/res/drawable-xhdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
index fed1da7..d40afeb 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
deleted file mode 100644
index ca90d52..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
deleted file mode 100644
index ad277d6..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
index 3c5f89f..d1a2f75 100644
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
+++ b/java/res/drawable-xhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
deleted file mode 100644
index 6c49824..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
deleted file mode 100644
index 2cd7b02..0000000
--- a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..6ee55e8
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..a5c5093
--- /dev/null
+++ b/java/res/drawable-xhdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
deleted file mode 100644
index e5efc58..0000000
--- a/java/res/drawable-xxhdpi/emoji_category_tab_selected_holo_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
new file mode 100644
index 0000000..b13ee2b
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_ics.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
new file mode 100644
index 0000000..c81e651
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_klp.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_selected_lxx_dark.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_selected_lxx_dark.9.png
new file mode 100644
index 0000000..084554f
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_selected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/emoji_category_tab_unselected_lxx_dark.9.png b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_lxx_dark.9.png
new file mode 100644
index 0000000..62547a9
--- /dev/null
+++ b/java/res/drawable-xxhdpi/emoji_category_tab_unselected_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
new file mode 100644
index 0000000..a217269
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
new file mode 100644
index 0000000..dfa43cd
--- /dev/null
+++ b/java/res/drawable-xxhdpi/ic_emoji_emoticons_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_activated_holo_dark.png
rename to java/res/drawable-xxhdpi/ic_emoji_recents_activated_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png b/java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
similarity index 100%
rename from java/res/drawable-xxhdpi/ic_emoji_recent_normal_holo_dark.png
rename to java/res/drawable-xxhdpi/ic_emoji_recents_normal_holo_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
index 1f10e92..f781491 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
deleted file mode 100644
index 25e362c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
deleted file mode 100644
index c6d9f3c..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_left_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
index a197c29..a79499f 100644
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
+++ b/java/res/drawable-xxhdpi/keyboard_key_feedback_more_background_lxx_dark.9.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
deleted file mode 100644
index 686f757..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png b/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
deleted file mode 100644
index 41fad2d..0000000
--- a/java/res/drawable-xxhdpi/keyboard_key_feedback_right_more_background_lxx_dark.9.png
+++ /dev/null
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png
new file mode 100644
index 0000000..2595ec9
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_locked_lxx_dark.png
Binary files differ
diff --git a/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png
new file mode 100644
index 0000000..a58b525
--- /dev/null
+++ b/java/res/drawable-xxhdpi/sym_keyboard_shift_lxx_dark.png
Binary files differ
diff --git a/java/res/color/emoji_tab_label_color_lxx_dark.xml b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
similarity index 73%
rename from java/res/color/emoji_tab_label_color_lxx_dark.xml
rename to java/res/drawable/ic_emoji_emoticons_holo_dark.xml
index 090f83e..59e2349 100644
--- a/java/res/color/emoji_tab_label_color_lxx_dark.xml
+++ b/java/res/drawable/ic_emoji_emoticons_holo_dark.xml
@@ -21,13 +21,12 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:state_focused="true"
-        android:color="@color/key_text_color_lxx_dark" />
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
     <item
         android:state_pressed="true"
-        android:color="@color/key_text_color_lxx_dark" />
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
     <item
         android:state_selected="true"
-        android:color="@color/key_text_color_lxx_dark" />
-    <item
-        android:color="@color/key_text_inactive_color_lxx_dark" />
+        android:drawable="@drawable/ic_emoji_emoticons_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_emoticons_normal_holo_dark" />
 </selector>
diff --git a/java/res/drawable/ic_emoji_recent_holo_dark.xml b/java/res/drawable/ic_emoji_recents_holo_dark.xml
similarity index 75%
rename from java/res/drawable/ic_emoji_recent_holo_dark.xml
rename to java/res/drawable/ic_emoji_recents_holo_dark.xml
index 225caeb..f14349f 100644
--- a/java/res/drawable/ic_emoji_recent_holo_dark.xml
+++ b/java/res/drawable/ic_emoji_recents_holo_dark.xml
@@ -21,12 +21,12 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:state_focused="true"
-        android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
     <item
         android:state_pressed="true"
-        android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
     <item
         android:state_selected="true"
-        android:drawable="@drawable/ic_emoji_recent_activated_holo_dark" />
-    <item android:drawable="@drawable/ic_emoji_recent_normal_holo_dark" />
+        android:drawable="@drawable/ic_emoji_recents_activated_holo_dark" />
+    <item android:drawable="@drawable/ic_emoji_recents_normal_holo_dark" />
 </selector>
diff --git a/java/res/drawable/keyboard_key_feedback_lxx_dark.xml b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
index e624a8b..ab1109b 100644
--- a/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
+++ b/java/res/drawable/keyboard_key_feedback_lxx_dark.xml
@@ -20,15 +20,15 @@
 >
     <!-- Left edge -->
     <item latin:state_left_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_more_background_lxx_dark" />
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
     <item latin:state_left_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_left_background_lxx_dark" />
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
 
     <!-- Right edge -->
     <item latin:state_right_edge="true" latin:state_has_morekeys="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_more_background_lxx_dark" />
+          android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
     <item latin:state_right_edge="true"
-          android:drawable="@drawable/keyboard_key_feedback_right_background_lxx_dark" />
+          android:drawable="@drawable/keyboard_key_feedback_background_lxx_dark" />
 
     <item latin:state_has_morekeys="true"
           android:drawable="@drawable/keyboard_key_feedback_more_background_lxx_dark" />
diff --git a/java/res/layout/emoji_keyboard_tab_label.xml b/java/res/layout/emoji_keyboard_tab_label.xml
deleted file mode 100644
index 62c552d..0000000
--- a/java/res/layout/emoji_keyboard_tab_label.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="0dip"
-    android:layout_weight="1.0"
-    android:layout_height="wrap_content"
-    android:gravity="center"
-/>
diff --git a/java/res/layout/emoji_palettes_view.xml b/java/res/layout/emoji_palettes_view.xml
index c0c346e..e2933f9 100644
--- a/java/res/layout/emoji_palettes_view.xml
+++ b/java/res/layout/emoji_palettes_view.xml
@@ -41,11 +41,9 @@
                 android:id="@android:id/tabs"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:background="@drawable/emoji_category_tab_selected_holo_dark"
                 android:divider="@null"
                 android:tabStripEnabled="true"
-                android:tabStripLeft="@drawable/emoji_category_tab_unselected_holo_dark"
-                android:tabStripRight="@drawable/emoji_category_tab_unselected_holo_dark" />
+                style="?attr/emojiTabWidgetStyle" />
             <FrameLayout
                 android:id="@android:id/tabcontent"
                 android:layout_width="0dip"
@@ -70,7 +68,6 @@
             android:layout_width="0dip"
             android:layout_weight="12.5"
             android:layout_height="match_parent"
-            android:src="@drawable/sym_keyboard_delete_holo_dark"
             android:contentDescription="@string/spoken_description_delete" />
     </LinearLayout>
     <android.support.v4.view.ViewPager
@@ -80,8 +77,8 @@
     <com.android.inputmethod.keyboard.emoji.EmojiCategoryPageIndicatorView
         android:id="@+id/emoji_category_page_id_view"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/emoji_category_page_id_background_holo" />
+        android:layout_height="2dip"
+        style="?attr/emojiCategoryPageIndicatorViewStyle" />
     <LinearLayout
         android:id="@+id/emoji_action_bar"
         android:orientation="horizontal"
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index b90e82b..307ef13 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -30,6 +30,10 @@
         <attr name="keyPreviewTextViewStyle" format="reference"/>
         <!-- EmojiPalettesView style -->
         <attr name="emojiPalettesViewStyle" format="reference" />
+        <!-- TabWidget of EmojiPlettesView style -->
+        <attr name="emojiTabWidgetStyle" format="reference" />
+        <!-- EmojiCategoryPageIndicatorView style -->
+        <attr name="emojiCategoryPageIndicatorViewStyle" format="reference" />
         <!-- MoreKeysKeyboard style -->
         <attr name="moreKeysKeyboardStyle" format="reference" />
         <!-- MoreKeysKeyboardView style -->
@@ -172,7 +176,17 @@
     </declare-styleable>
 
     <declare-styleable name="EmojiPalettesView">
-        <attr name="emojiTabLabelColor" format="reference" />
+        <attr name="iconEmojiRecentsTab" format="reference" />
+        <attr name="iconEmojiCategory1Tab" format="reference" />
+        <attr name="iconEmojiCategory2Tab" format="reference" />
+        <attr name="iconEmojiCategory3Tab" format="reference" />
+        <attr name="iconEmojiCategory4Tab" format="reference" />
+        <attr name="iconEmojiCategory5Tab" format="reference" />
+        <attr name="iconEmojiCategory6Tab" format="reference" />
+    </declare-styleable>
+
+    <declare-styleable name="EmojiCategoryPageIndicatorView">
+        <attr name="emojiCategoryPageIndicatorColor" format="color" />
     </declare-styleable>
 
     <declare-styleable name="SuggestionStripView">
diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml
index 12cb71f..0eee08d 100644
--- a/java/res/values/colors.xml
+++ b/java/res/values/colors.xml
@@ -34,6 +34,7 @@
     <color name="spacebar_text_color_holo">#FFC0C0C0</color>
     <color name="spacebar_text_shadow_color_holo">#80000000</color>
     <color name="gesture_floating_preview_color_holo">#C0000000</color>
+    <color name="emoji_tab_page_indicator_background_holo">#111111</color>
     <!-- Color resources for KLP theme. Base color = F0F0F0 -->
     <color name="highlight_color_klp">#FFF0F0F0</color>
     <color name="typed_word_color_klp">#D8F0F0F0</color>
@@ -53,12 +54,11 @@
     <color name="suggestions_strip_background_lxx_dark">#263238</color>
     <color name="suggested_word_background_selected_lxx_dark">#384248</color>
     <color name="gesture_floating_preview_color_lxx_dark">#C0000000</color>
+    <color name="emoji_tab_page_indicator_background_lxx_dark">#263238</color>
     <!-- Color resources for setup wizard and tutorial -->
     <color name="setup_background">#FFEBEBEB</color>
     <color name="setup_text_dark">#FF707070</color>
     <color name="setup_text_action">@android:color/holo_blue_light</color>
     <color name="setup_step_background">@android:color/background_light</color>
     <color name="setup_welcome_video_margin_color">#FFCCCCCC</color>
-    <color name="emoji_category_page_id_background_holo">#FF000000</color>
-    <color name="emoji_category_page_id_foreground_holo">#80FFFFFF</color>
 </resources>
diff --git a/java/res/values/themes-common.xml b/java/res/values/themes-common.xml
index df26fb3..c5d3f55 100644
--- a/java/res/values/themes-common.xml
+++ b/java/res/values/themes-common.xml
@@ -110,6 +110,8 @@
     <!-- Though {@link EmojiPalettesView} doesn't extend {@link KeyboardView}, some views inside it,
          for instance delete button, need themed {@link KeyboardView} attributes. -->
     <style name="EmojiPalettesView" />
+    <style name="EmojiTabWidget" />
+    <style name="EmojiCategoryPageIndicatorView" />
     <style name="MoreKeysKeyboard" />
     <style
         name="MoreKeysKeyboardView"
diff --git a/java/res/values/themes-ics.xml b/java/res/values/themes-ics.xml
index 22fb2c8..f7ca5a3 100644
--- a/java/res/values/themes-ics.xml
+++ b/java/res/values/themes-ics.xml
@@ -25,6 +25,8 @@
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.ICS</item>
         <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.ICS</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.ICS</item>
+        <item name="emojiTabWidgetStyle">@style/EmojiTabWidget.ICS</item>
+        <item name="emojiCategoryPageIndicatorViewStyle">@style/EmojiCategoryPageIndicatorView.ICS</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.ICS</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.ICS</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.ICS</item>
@@ -87,7 +89,22 @@
         name="EmojiPalettesView.ICS"
         parent="MainKeyboardView.ICS"
     >
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
+    </style>
+    <style name="EmojiCategoryPageIndicatorView.ICS">
+        <item name="android:background">@color/emoji_tab_page_indicator_background_holo</item>
+        <item name="emojiCategoryPageIndicatorColor">@color/highlight_color_ics</item>
+    </style>
+    <style name="EmojiTabWidget.ICS">
+        <item name="android:background">@drawable/emoji_category_tab_selected_ics</item>
+        <item name="android:tabStripLeft">@drawable/emoji_category_tab_unselected_holo_dark</item>
+        <item name="android:tabStripRight">@drawable/emoji_category_tab_unselected_holo_dark</item>
     </style>
     <style
         name="MoreKeysKeyboard.ICS"
diff --git a/java/res/values/themes-klp.xml b/java/res/values/themes-klp.xml
index 212f5db..96d0478 100644
--- a/java/res/values/themes-klp.xml
+++ b/java/res/values/themes-klp.xml
@@ -25,6 +25,8 @@
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.KLP</item>
         <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.KLP</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.KLP</item>
+        <item name="emojiTabWidgetStyle">@style/EmojiTabWidget.KLP</item>
+        <item name="emojiCategoryPageIndicatorViewStyle">@style/EmojiCategoryPageIndicatorView.KLP</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.KLP</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.KLP</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.KLP</item>
@@ -87,7 +89,22 @@
         name="EmojiPalettesView.KLP"
         parent="MainKeyboardView.KLP"
     >
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_holo</item>
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
+    </style>
+    <style name="EmojiCategoryPageIndicatorView.KLP">
+        <item name="android:background">@color/emoji_tab_page_indicator_background_holo</item>
+        <item name="emojiCategoryPageIndicatorColor">@color/highlight_color_klp</item>
+    </style>
+    <style name="EmojiTabWidget.KLP">
+        <item name="android:background">@drawable/emoji_category_tab_selected_klp</item>
+        <item name="android:tabStripLeft">@drawable/emoji_category_tab_unselected_holo_dark</item>
+        <item name="android:tabStripRight">@drawable/emoji_category_tab_unselected_holo_dark</item>
     </style>
     <style
         name="MoreKeysKeyboard.KLP"
diff --git a/java/res/values/themes-lxx-dark.xml b/java/res/values/themes-lxx-dark.xml
index ace5fe9..7fb122a 100644
--- a/java/res/values/themes-lxx-dark.xml
+++ b/java/res/values/themes-lxx-dark.xml
@@ -25,6 +25,8 @@
         <item name="mainKeyboardViewStyle">@style/MainKeyboardView.LXX_Dark</item>
         <item name="keyPreviewTextViewStyle">@style/KeyPreviewTextView.LXX_Dark</item>
         <item name="emojiPalettesViewStyle">@style/EmojiPalettesView.LXX_Dark</item>
+        <item name="emojiTabWidgetStyle">@style/EmojiTabWidget.LXX_Dark</item>
+        <item name="emojiCategoryPageIndicatorViewStyle">@style/EmojiCategoryPageIndicatorView.LXX_Dark</item>
         <item name="moreKeysKeyboardStyle">@style/MoreKeysKeyboard.LXX_Dark</item>
         <item name="moreKeysKeyboardViewStyle">@style/MoreKeysKeyboardView.LXX_Dark</item>
         <item name="suggestionStripViewStyle">@style/SuggestionStripView.LXX_Dark</item>
@@ -88,7 +90,23 @@
         name="EmojiPalettesView.LXX_Dark"
         parent="MainKeyboardView.LXX_Dark"
     >
-        <item name="emojiTabLabelColor">@color/emoji_tab_label_color_lxx_dark</item>
+        <!-- TODO: Update those icons to LXX_Dark theme. -->
+        <item name="iconEmojiRecentsTab">@drawable/ic_emoji_recents_holo_dark</item>
+        <item name="iconEmojiCategory1Tab">@drawable/ic_emoji_people_holo_dark</item>
+        <item name="iconEmojiCategory2Tab">@drawable/ic_emoji_objects_holo_dark</item>
+        <item name="iconEmojiCategory3Tab">@drawable/ic_emoji_nature_holo_dark</item>
+        <item name="iconEmojiCategory4Tab">@drawable/ic_emoji_places_holo_dark</item>
+        <item name="iconEmojiCategory5Tab">@drawable/ic_emoji_symbols_holo_dark</item>
+        <item name="iconEmojiCategory6Tab">@drawable/ic_emoji_emoticons_holo_dark</item>
+    </style>
+    <style name="EmojiCategoryPageIndicatorView.LXX_Dark">
+        <item name="android:background">@color/emoji_tab_page_indicator_background_lxx_dark</item>
+        <item name="emojiCategoryPageIndicatorColor">@color/highlight_color_lxx_dark</item>
+    </style>
+    <style name="EmojiTabWidget.LXX_Dark">
+        <item name="android:background">@drawable/emoji_category_tab_selected_lxx_dark</item>
+        <item name="android:tabStripLeft">@drawable/emoji_category_tab_unselected_lxx_dark</item>
+        <item name="android:tabStripRight">@drawable/emoji_category_tab_unselected_lxx_dark</item>
     </style>
     <style
         name="MoreKeysKeyboard.LXX_Dark"
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
index 495fa55..8590991 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategory.java
@@ -18,6 +18,7 @@
 
 import android.content.SharedPreferences;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.graphics.Rect;
 import android.os.Build;
 import android.util.Log;
@@ -69,17 +70,14 @@
             "symbols",
             "emoticons" };
 
-    private static final int[] sCategoryIcon = {
-            R.drawable.ic_emoji_recent_holo_dark,
-            R.drawable.ic_emoji_people_holo_dark,
-            R.drawable.ic_emoji_objects_holo_dark,
-            R.drawable.ic_emoji_nature_holo_dark,
-            R.drawable.ic_emoji_places_holo_dark,
-            R.drawable.ic_emoji_symbols_holo_dark,
-            0 };
-
-    private static final String[] sCategoryLabel =
-            { null, null, null, null, null, null, ":-)" };
+    private static final int[] sCategoryTabIconAttr = {
+            R.styleable.EmojiPalettesView_iconEmojiRecentsTab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory1Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory2Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory3Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory4Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory5Tab,
+            R.styleable.EmojiPalettesView_iconEmojiCategory6Tab };
 
     private static final int[] sAccessibilityDescriptionResourceIdsForCategories = {
             R.string.spoken_descrption_emoji_category_recents,
@@ -104,6 +102,7 @@
     private final int mMaxPageKeyCount;
     private final KeyboardLayoutSet mLayoutSet;
     private final HashMap<String, Integer> mCategoryNameToIdMap = CollectionUtils.newHashMap();
+    private final int[] mCategoryTabIconId = new int[sCategoryName.length];
     private final ArrayList<CategoryProperties> mShownCategories =
             CollectionUtils.newArrayList();
     private final ConcurrentHashMap<Long, DynamicGridKeyboard>
@@ -113,13 +112,15 @@
     private int mCurrentCategoryPageId = 0;
 
     public EmojiCategory(final SharedPreferences prefs, final Resources res,
-            final KeyboardLayoutSet layoutSet) {
+            final KeyboardLayoutSet layoutSet, final TypedArray emojiPaletteViewAttr) {
         mPrefs = prefs;
         mRes = res;
         mMaxPageKeyCount = res.getInteger(R.integer.config_emoji_keyboard_max_page_key_count);
         mLayoutSet = layoutSet;
         for (int i = 0; i < sCategoryName.length; ++i) {
             mCategoryNameToIdMap.put(sCategoryName[i], i);
+            mCategoryTabIconId[i] = emojiPaletteViewAttr.getResourceId(
+                    sCategoryTabIconAttr[i], 0);
         }
         addShownCategoryId(EmojiCategory.ID_RECENTS);
         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2
@@ -158,12 +159,8 @@
         return mCategoryNameToIdMap.get(strings[0]);
     }
 
-    public int getCategoryIcon(final int categoryId) {
-        return sCategoryIcon[categoryId];
-    }
-
-    public String getCategoryLabel(final int categoryId) {
-        return sCategoryLabel[categoryId];
+    public int getCategoryTabIcon(final int categoryId) {
+        return mCategoryTabIconId[categoryId];
     }
 
     public String getAccessibilityDescription(final int categoryId) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
index f5aa107..a6b0891 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiCategoryPageIndicatorView.java
@@ -16,29 +16,36 @@
 
 package com.android.inputmethod.keyboard.emoji;
 
-import com.android.inputmethod.latin.R;
-
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.util.AttributeSet;
-import android.widget.LinearLayout;
+import android.view.View;
 
-public final class EmojiCategoryPageIndicatorView extends LinearLayout {
+import com.android.inputmethod.latin.R;
+
+public final class EmojiCategoryPageIndicatorView extends View {
     private static final float BOTTOM_MARGIN_RATIO = 1.0f;
     private final Paint mPaint = new Paint();
     private int mCategoryPageSize = 0;
     private int mCurrentCategoryPageId = 0;
     private float mOffset = 0.0f;
 
-    public EmojiCategoryPageIndicatorView(final Context context) {
-        this(context, null /* attrs */);
+    public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs) {
+        this(context, attrs, R.attr.emojiCategoryPageIndicatorViewStyle);
     }
 
-    public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs) {
-        super(context, attrs);
-        mPaint.setColor(context.getResources().getColor(
-                R.color.emoji_category_page_id_foreground_holo));
+    public EmojiCategoryPageIndicatorView(final Context context, final AttributeSet attrs,
+            final int defStyle) {
+        super(context, attrs, defStyle);
+        final TypedArray indicatorViewAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.EmojiCategoryPageIndicatorView, defStyle,
+                R.style.EmojiCategoryPageIndicatorView);
+        final int indicatorColor = indicatorViewAttr.getColor(
+                R.styleable.EmojiCategoryPageIndicatorView_emojiCategoryPageIndicatorColor, 0);
+        indicatorViewAttr.recycle();
+        mPaint.setColor(indicatorColor);
     }
 
     public void setCategoryPageId(final int size, final int id, final float offset) {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
index 77c183a..fbc1282 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiLayoutParams.java
@@ -16,14 +16,15 @@
 
 package com.android.inputmethod.keyboard.emoji;
 
-import com.android.inputmethod.latin.R;
-import com.android.inputmethod.latin.utils.ResourceUtils;
-
 import android.content.res.Resources;
 import android.support.v4.view.ViewPager;
+import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
+import com.android.inputmethod.latin.R;
+import com.android.inputmethod.latin.utils.ResourceUtils;
+
 final class EmojiLayoutParams {
     private static final int DEFAULT_KEYBOARD_ROWS = 4;
 
@@ -67,10 +68,10 @@
         vp.setLayoutParams(lp);
     }
 
-    public void setCategoryPageIdViewProperties(final LinearLayout ll) {
-        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams();
+    public void setCategoryPageIdViewProperties(final View v) {
+        final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) v.getLayoutParams();
         lp.height = mEmojiCategoryPageIdViewHeight;
-        ll.setLayoutParams(lp);
+        v.setLayoutParams(lp);
     }
 
     public int getActionBarHeight() {
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
index 8e45957..6b9e880 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPalettesView.java
@@ -19,11 +19,9 @@
 import static com.android.inputmethod.latin.Constants.NOT_A_COORDINATE;
 
 import android.content.Context;
-import android.content.res.ColorStateList;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.Color;
-import android.graphics.Typeface;
 import android.os.CountDownTimer;
 import android.preference.PreferenceManager;
 import android.support.v4.view.ViewPager;
@@ -56,7 +54,7 @@
 
 /**
  * View class to implement Emoji palettes.
- * The Emoji keyboard consists of group of views {@link R.layout#emoji_palettes_view}.
+ * The Emoji keyboard consists of group of views layout/emoji_palettes_view.
  * <ol>
  * <li> Emoji category tabs.
  * <li> Delete button.
@@ -70,7 +68,6 @@
         EmojiPageKeyboardView.OnKeyEventListener {
     private final int mFunctionalKeyBackgroundId;
     private final int mSpacebarBackgroundId;
-    private final ColorStateList mTabLabelColor;
     private final DeleteKeyOnTouchListener mDeleteKeyOnTouchListener;
     private EmojiPalettesAdapter mEmojiPalettesAdapter;
     private final EmojiLayoutParams mEmojiLayoutParams;
@@ -103,11 +100,6 @@
         mSpacebarBackgroundId = keyboardViewAttr.getResourceId(
                 R.styleable.KeyboardView_spacebarBackground, keyBackgroundId);
         keyboardViewAttr.recycle();
-        final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
-                R.styleable.EmojiPalettesView, defStyle, R.style.EmojiPalettesView);
-        mTabLabelColor = emojiPalettesViewAttr.getColorStateList(
-                R.styleable.EmojiPalettesView_emojiTabLabelColor);
-        emojiPalettesViewAttr.recycle();
         final KeyboardLayoutSet.Builder builder = new KeyboardLayoutSet.Builder(
                 context, null /* editorInfo */);
         final Resources res = context.getResources();
@@ -117,8 +109,12 @@
                 mEmojiLayoutParams.mEmojiKeyboardHeight);
         builder.setOptions(false /* shortcutImeEnabled */, false /* showsVoiceInputKey */,
                 false /* languageSwitchKeyEnabled */);
+        final KeyboardLayoutSet layoutSet = builder.build();
+        final TypedArray emojiPalettesViewAttr = context.obtainStyledAttributes(attrs,
+                R.styleable.EmojiPalettesView, defStyle, R.style.EmojiPalettesView);
         mEmojiCategory = new EmojiCategory(PreferenceManager.getDefaultSharedPreferences(context),
-                context.getResources(), builder.build());
+                res, layoutSet, emojiPalettesViewAttr);
+        emojiPalettesViewAttr.recycle();
         mDeleteKeyOnTouchListener = new DeleteKeyOnTouchListener(context);
     }
 
@@ -139,24 +135,11 @@
         final String tabId = mEmojiCategory.getCategoryName(categoryId, 0 /* categoryPageId */);
         final TabHost.TabSpec tspec = host.newTabSpec(tabId);
         tspec.setContent(R.id.emoji_keyboard_dummy);
-        if (mEmojiCategory.getCategoryIcon(categoryId) != 0) {
-            final ImageView iconView = (ImageView)LayoutInflater.from(getContext()).inflate(
-                    R.layout.emoji_keyboard_tab_icon, null);
-            iconView.setImageResource(mEmojiCategory.getCategoryIcon(categoryId));
-            iconView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId));
-            tspec.setIndicator(iconView);
-        }
-        if (mEmojiCategory.getCategoryLabel(categoryId) != null) {
-            final TextView textView = (TextView)LayoutInflater.from(getContext()).inflate(
-                    R.layout.emoji_keyboard_tab_label, null);
-            textView.setText(mEmojiCategory.getCategoryLabel(categoryId));
-            textView.setTypeface(Typeface.DEFAULT_BOLD);
-            textView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId));
-            if (mTabLabelColor != null) {
-                textView.setTextColor(mTabLabelColor);
-            }
-            tspec.setIndicator(textView);
-        }
+        final ImageView iconView = (ImageView)LayoutInflater.from(getContext()).inflate(
+                R.layout.emoji_keyboard_tab_icon, null);
+        iconView.setImageResource(mEmojiCategory.getCategoryTabIcon(categoryId));
+        iconView.setContentDescription(mEmojiCategory.getAccessibilityDescription(categoryId));
+        tspec.setIndicator(iconView);
         host.addTab(tspec);
     }
 
@@ -353,7 +336,7 @@
     private static void setupAlphabetKey(final TextView alphabetKey, final String label,
             final KeyDrawParams params) {
         alphabetKey.setText(label);
-        alphabetKey.setTextColor(params.mTextColor);
+        alphabetKey.setTextColor(params.mFunctionalTextColor);
         alphabetKey.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mLabelSize);
         alphabetKey.setTypeface(params.mTypeface);
     }
diff --git a/java/src/com/android/inputmethod/latin/InputAttributes.java b/java/src/com/android/inputmethod/latin/InputAttributes.java
index 726b3d1..df49483 100644
--- a/java/src/com/android/inputmethod/latin/InputAttributes.java
+++ b/java/src/com/android/inputmethod/latin/InputAttributes.java
@@ -46,6 +46,8 @@
         final int inputType = null != editorInfo ? editorInfo.inputType : 0;
         final int inputClass = inputType & InputType.TYPE_MASK_CLASS;
         mInputType = inputType;
+        mIsPasswordField = InputTypeUtils.isPasswordInputType(inputType)
+                || InputTypeUtils.isVisiblePasswordInputType(inputType);
         if (inputClass != InputType.TYPE_CLASS_TEXT) {
             // If we are not looking at a TYPE_CLASS_TEXT field, the following strange
             // cases may arise, so we do a couple sanity checks for them. If it's a
@@ -61,7 +63,6 @@
                 Log.w(TAG, String.format("Unexpected input class: inputType=0x%08x"
                         + " imeOptions=0x%08x", inputType, editorInfo.imeOptions));
             }
-            mIsPasswordField = false;
             mIsSettingsSuggestionStripOn = false;
             mInputTypeNoAutoCorrect = false;
             mApplicationSpecifiedCompletionOn = false;
@@ -79,8 +80,6 @@
         final boolean flagAutoComplete =
                 0 != (inputType & InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
 
-        mIsPasswordField = InputTypeUtils.isPasswordInputType(inputType)
-                || InputTypeUtils.isVisiblePasswordInputType(inputType);
         // TODO: Have a helper method in InputTypeUtils
         // Make sure that passwords are not displayed in {@link SuggestionStripView}.
         final boolean noSuggestionStrip = mIsPasswordField