如何在AOSP中为LatinIME设置默认主题

时间:2017-02-24 17:20:57

标签: android keyboard themes default android-source

我需要一些指导,为AOSP上的LatinIME设置默认主题。我不太确定这个值的存储位置。

首先,我尝试在LatinIME中的ThemeSettingsFragment.java中设置主题。因此,现在每次设置或更改主题时,它总是会选择我的。后来我发现只有当我们在设置(语言和输入 - > Android键盘(AOSP) - >外观&布局 - >主题)中打开键盘主题时才会调用此类。只有在我们打开这些视图时才会导致主题被更改。我的目标是在构建AOSP时设置主题。

接下来我怀疑这个值可以存储在一些全局配置中,这导致我在InputMethodManagerService.java类中找到了常量Settings.Secure.DEFAULT_INPUT_METHOD。但这并没有让我感到有价值。

任何人都曾在类似的事情上工作或知道我的问题的解决方案?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

Sanyam Jain恰到好处,在此添加了更多细节。 可以修改packages / inputmethods / LatinIME / java / src / com / android / inputmethod / keyboard / KeyboardTheme.java来更改默认键盘布局,或者您可以在其中添加自定义布局,并确保在软件包中正确添加/更改了选项/inputmethods/LatinIME/java/res/values/keyboard-themes.xml

就我而言,我希望将深色主题作为默认设置,并将其作为键盘布局设置中的第一个选项。下面是我所做的更改,

  1. KeyboardTheme.java

    公共静态最终int DEFAULT_THEME_ID = THEME_ID_LXX_DARK;

    私有静态KeyboardTheme [] 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>