如何在 AOSP 中为 LatinIME 设置默认主题
How to set default theme for LatinIME in AOSP
我需要一些关于在 AOSP 上为 LatinIME 设置默认主题的指导。我不太确定这个值存储在哪里。
首先,我尝试在位于 LatinIME 的 ThemeSettingsFragment.java 中设置主题。所以现在每次设置或更改主题时,它总是会选择我的。后来我发现这个 class 只有在我们在设置中打开键盘主题时才会调用(语言和输入 -> Android 键盘(AOSP) -> 外观和布局 -> 主题)。只有在我们打开这些视图时才会更改主题。我的目标是在构建 AOSP 时设置我的主题。
接下来,我怀疑该值可能存储在某些全局配置中,这导致我找到 class InputMethodManagerService.java,在那里我发现常量 Settings.Secure.DEFAULT_INPUT_METHOD。但这并没有把我带到任何值得的地方。
有没有人做过类似的事情或知道我的问题的解决方案?
希望对您有所帮助。
Sanyam Jain 是正确的,添加了一些细节。
要修改 packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java 以更改默认键盘布局,或者您可以在那里添加自定义布局,并确保选项 added/changed 在 packages/inputmethods/LatinIME/java/res/values/keyboard-themes.[=48 中正确=]
就我而言,我希望 material 深色主题作为键盘布局设置中的默认和第一个选项。以下是我所做的更改,
KeyboardTheme.java
public static final int DEFAULT_THEME_ID = THEME_ID_LXX_DARK;
私有静态键盘主题[] AVAILABLE_KEYBOARD_THEMES;
/* package private for testing */
static final KeyboardTheme[] KEYBOARD_THEMES = {
new KeyboardTheme(THEME_ID_LXX_DARK, "LXXDark", R.style.KeyboardTheme_LXX_Dark,
// This has never been selected as default theme.
Build.VERSION_CODES.LOLLIPOP),
new KeyboardTheme(THEME_ID_ICS, "ICS", R.style.KeyboardTheme_ICS,
// This has never been selected because we support ICS or later.
VERSION_CODES.BASE),
new KeyboardTheme(THEME_ID_KLP, "KLP", R.style.KeyboardTheme_KLP,
// Default theme for ICS, JB, and KLP.
VERSION_CODES.ICE_CREAM_SANDWICH),
new KeyboardTheme(THEME_ID_LXX_LIGHT, "LXXLight", R.style.KeyboardTheme_LXX_Light,
// Default theme for LXX.
VERSION_CODES.BASE),
};
- 在keyboard-themes.xml
<string-array name="keyboard_theme_names" translatable="false">
<item>@string/keyboard_theme_material_dark</item>
<item>@string/keyboard_theme_material_light</item>
<item>@string/keyboard_theme_holo_white</item>
<item>@string/keyboard_theme_holo_blue</item>
</string-array>
<!-- An element must be a keyboard theme id of
{@link com.android.inputmethod.keyboard.KeyboardTheme#THEME_ID_ICS} etc. -->
<integer-array name="keyboard_theme_ids" translatable="false">
<item>4</item>
<item>3</item>
<item>2</item>
<item>0</item>
</integer-array>
我需要一些关于在 AOSP 上为 LatinIME 设置默认主题的指导。我不太确定这个值存储在哪里。
首先,我尝试在位于 LatinIME 的 ThemeSettingsFragment.java 中设置主题。所以现在每次设置或更改主题时,它总是会选择我的。后来我发现这个 class 只有在我们在设置中打开键盘主题时才会调用(语言和输入 -> Android 键盘(AOSP) -> 外观和布局 -> 主题)。只有在我们打开这些视图时才会更改主题。我的目标是在构建 AOSP 时设置我的主题。
接下来,我怀疑该值可能存储在某些全局配置中,这导致我找到 class InputMethodManagerService.java,在那里我发现常量 Settings.Secure.DEFAULT_INPUT_METHOD。但这并没有把我带到任何值得的地方。
有没有人做过类似的事情或知道我的问题的解决方案?
希望对您有所帮助。
Sanyam Jain 是正确的,添加了一些细节。 要修改 packages/inputmethods/LatinIME/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java 以更改默认键盘布局,或者您可以在那里添加自定义布局,并确保选项 added/changed 在 packages/inputmethods/LatinIME/java/res/values/keyboard-themes.[=48 中正确=]
就我而言,我希望 material 深色主题作为键盘布局设置中的默认和第一个选项。以下是我所做的更改,
KeyboardTheme.java
public static final int DEFAULT_THEME_ID = THEME_ID_LXX_DARK;
私有静态键盘主题[] AVAILABLE_KEYBOARD_THEMES;
/* package private for testing */ static final KeyboardTheme[] KEYBOARD_THEMES = { new KeyboardTheme(THEME_ID_LXX_DARK, "LXXDark", R.style.KeyboardTheme_LXX_Dark, // This has never been selected as default theme. Build.VERSION_CODES.LOLLIPOP), new KeyboardTheme(THEME_ID_ICS, "ICS", R.style.KeyboardTheme_ICS, // This has never been selected because we support ICS or later. VERSION_CODES.BASE), new KeyboardTheme(THEME_ID_KLP, "KLP", R.style.KeyboardTheme_KLP, // Default theme for ICS, JB, and KLP. VERSION_CODES.ICE_CREAM_SANDWICH), new KeyboardTheme(THEME_ID_LXX_LIGHT, "LXXLight", R.style.KeyboardTheme_LXX_Light, // Default theme for LXX. VERSION_CODES.BASE), };
- 在keyboard-themes.xml
<string-array name="keyboard_theme_names" translatable="false">
<item>@string/keyboard_theme_material_dark</item>
<item>@string/keyboard_theme_material_light</item>
<item>@string/keyboard_theme_holo_white</item>
<item>@string/keyboard_theme_holo_blue</item>
</string-array>
<!-- An element must be a keyboard theme id of
{@link com.android.inputmethod.keyboard.KeyboardTheme#THEME_ID_ICS} etc. -->
<integer-array name="keyboard_theme_ids" translatable="false">
<item>4</item>
<item>3</item>
<item>2</item>
<item>0</item>
</integer-array>