5

我正在创建自定义键盘。我从Here得到了一个非常有用的演示。我想创建键盘的多个主题,所以我为键盘创建了另一个布局,但现在的问题是我不知道如何设置当前键盘的布局或必须重新加载键盘或必须做其他事情..改变键盘的设计没有任何想法。

我的概念是用户必须从活动中选择键盘主题,键盘设计会改变。

任何人都可以帮助我或有任何想法来解决这个问题..?

4

1 回答 1

13

获取更改自定义键盘布局的解决方案。

当键盘第一次加载 onCreateInputView() 被调用。之后,每次打开键盘时都会调用 onStartInputView(EditorInfo 属性,布尔重新启动)。

所以,现在键盘(主题)的布局必须在 onCreateInputView() 中定义就像这样

public KeyboardView mInputView;
public View onCreateInputView() {

    SharedPreferences pre = getSharedPreferences("test", 1);
    int theme = pre.getInt("theme", 1);

    if(theme == 1)
    {
        this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input, null);
    }else
    {
        this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input_2, null);

    }
    this.mInputView.setOnKeyboardActionListener(this);
    this.mInputView.setKeyboard(this.mQwertyKeyboard);
    return this.mInputView;
}

并在 onStartInputView 中执行此操作

public void onStartInputView(EditorInfo attribute, boolean restarting) {
    super.onStartInputView(attribute, restarting);

    setInputView(onCreateInputView());
}
于 2013-01-07T12:56:36.137 回答