2016-01-20 2 views
1

Я сделал довольно много поисковых запросов, и я не могу найти ничего, что было бы точно для того, что я пытаюсь сделать.Пользовательская клавиатура для Android: как создать дополнительную клавиатуру

Я следил за этим учебным пособием: http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android--cms-22615, и у меня есть работа, так как я хочу, чтобы это было для моей обычной (русской) раскладки клавиатуры. Однако я также хочу иметь возможность быстро переключаться между моей индивидуальной русской компоновкой и английским макетом.

Прямо сейчас я должен перейти в верхнюю часть экрана и каждый раз выбирать новую клавиатуру (которая занимает ~ 5 с или около того, но я часто переключаюсь туда и обратно). Я бы хотел сделать это одним нажатием для переключения между клавиатурами.

Если кто-то может объяснить мне, как создать ключ, который позволяет мне перейти на второй макет, который был бы очень признателен.

+0

Просто добавьте языковой ключ к своей пользовательской клавиатуре и на нем щелкните по файлам xml-файлов. Вы должны попытаться понять, работает ли это. –

+0

Я БОЛЬШЕ оцениваю ответ. Это ТОЧНО, что я хочу делать. Есть ли вероятность, что вы могли бы рассказать мне, что такое keycode для языкового ключа? И как переключить клавиатуру xml? Я могу создать второй xml, просто не уверен, как переключиться на него. Я очень ценю вашу помощь. – Kurt

+0

@ Kurt вы можете переключиться на оба макета, установив для них «tag:» и проверив теги в активности. – Gattsu

ответ

0

Я не могу поблагодарить вас, Вивек Мишра. Ты гениальный добрый сэр!

Я создал второй файл xml (engQwerty.xml), чтобы сохранить мой второй макет. Оттуда все, что нужно, было в моем файле SimpleIME.java, в методе «onCreateInputView()», я создал вторую клавиатуру с помощью моего нового xml-файла, а также создал приватную логическую переменную (в моем случае isRus), чтобы отслеживать , макет которого я был в.

engKeyboard = new Keyboard(this, R.xml.engQwerty); 
    isRus = true; 

затем я добавил ключ, с клавиатурным -51 (произвольно выбранной) в обоих XML-файлов. Затем обратно в файл SimpleIME.java, под функцией OnKey, я добавил:

case -51 : 

    if(isRus) { 
     kv.setKeyboard(engKeyboard); 
     isRus = false; 
    } 
    else { 
     kv.setKeyboard(rusKeyboard); 
     isRus = true; 
    } 

    break; 

т.е. проверить, макет которого я в данный момент и переключаться между ними соответственно.

И наконец, если вы хотите, чтобы колпачки или клавиша смены изменили вашу клавиатуру, в функции «onKey» в разделе «case Keyboard.KEYCODE_SHIFT:» убедитесь, что вы добавили новую клавиатуру, чтобы стать «setShifted».

engKeyboard.setShifted(caps); 

Все кредиты Вивек Мишра. Надеюсь, это поможет другим программистам-разработчикам Android, таким как я нахожу решение довольно простой задачи.

Смежные вопросы