Я недавно следовал учебнику здесь с целью создания пользовательской клавиатуры.Тем не менее, я хочу быть немного более креативным.Вместо ключей я хочу иметь вид холста, где пользователь может рисовать изображения и отправлять их или что-то в этом роде.Я думал, что это будет так же просто, как замена клавиш в макете на типичные представления Android, но оказывается, что это невозможно.
В частности, в файле keyboard.xml
я помещаю линейную раскладку.с видом на поверхность внутри.И в файле, где будут определены ключи (key_layout.xml), я оставил это поле пустым.
Затем я создал службу, расширяющую клавиатуру:
public class KiwiService extends InputMethodService implements
KeyboardView.OnKeyboardActionListener {
private KeyboardView keyboardView;
private Keyboard keyboard;
@Override
public View onCreateInputView() {
keyboardView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard, null);
keyboard = new Keyboard(this, R.xml.key_layout);
keyboardView.setKeyboard(keyboard);
keyboardView.setOnKeyboardActionListener(this);
return keyboardView;
}
}
Когда я попыталсяиспользовать клавиатуру на моем телефоне, вид поверхности не появился, и приложение вскоре рухнуло.Теперь я уверен, что мне, вероятно, не следует определять это как клавиатуру, поскольку на самом деле у нее нет клавиш, но как правильно сделать это в Android?