【发布时间】:2013-12-16 00:04:13
【问题描述】:
下面是我用来将OnKeyboardActionListener 添加到我的KeyboardView 的代码。 (为简洁起见,我省略了我留空的必需的重写方法。)
keyboardView.setOnKeyboardActionListener(new OnKeyboardActionListener() {
private void shiftOn(boolean on) {
System.out.println("Shifting " + (on ? "on" : "off"));
keyboard.setShifted(on);
shiftKey.icon = keyboard.isShifted() ? shiftLockDrawable : shiftDrawable;
}
@Override
public void onKey(int primaryCode, int[] keyCodes) {
Editable editable = editText.getEditableText();
int selectionStart = editText.getSelectionStart();
if (primaryCode == SHIFT) {
shiftOn(!keyboard.isShifted());
} else {
if (primaryCode == DELETE) {
if (editable != null && selectionStart > 0) {
editable.delete(selectionStart - 1, selectionStart);
}
} else {
editable.insert(selectionStart, Character.toString((char) primaryCode));
}
shiftOn(false);
}
}
});
问题
当我按下 shift 键时,一切都按预期进行;键的图标和“shiftedness”状态都发生了变化。
但是,当我按下任何其他键(应该关闭 shift)时,shiftness 的状态会变为 off,但图标不会变为 unshifted 版本。我在使用文本而不是图标时遇到了同样的问题。
我尝试在我的KeyboardView 上调用postInvalidate(),但无济于事。
这是一个video,它突出了我的问题。
【问题讨论】:
-
您的 shiftOn() 方法是否有效。我的意思是你得到了 Shifting On/Off 的日志吗?
标签: java android keyboard shift