我正致力于创建自定义键盘。我从Here获得了这样一个非常有用的演示。我想创建键盘的多个主题,所以我为键盘创建另一个布局,但现在问题是我不知道如何设置当前键盘的布局或必须新加载键盘或必须做其他事情..改变键盘的设计没有任何想法。
我的理念是用户必须从活动中选择键盘主题,键盘设计才会改变。
任何人都可以帮助我或者有任何想法解决这个问题吗?
答案 0 :(得分:10)
获取解决方案以更改自定义键盘的布局。
当键盘第一次加载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());
}