如何在 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。但这并没有把我带到任何值得的地方。

有没有人做过类似的事情或知道我的问题的解决方案?

您可以尝试在此处进行更改:https://github.com/LineageOS/android_packages_inputmethods_LatinIME/blob/cm-14.1/java/src/com/android/inputmethod/keyboard/KeyboardTheme.java#L56-L58

希望对您有所帮助。

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 深色主题作为键盘布局设置中的默认和第一个选项。以下是我所做的更改,

  1. 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),
    
     };
    
  1. 在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>