Кастомная клавиатура
Кастомная клавиатура
Доброго времени суток!Как сделать кастомную клавиатуру в собственном приложении?Весь Интернет обыскал,но не нашёл нормального ответа!Может быть,что-то недопонял.Помогите разобраться,пожалуйста!Все примеры в Интернете рассказывают,как сделать клавиатуру отдельным приложением,а мне надо ,чтобы она работала внутри только моего приложения.
Re: Кастомная клавиатура
В своё время мне нужна была клавиатура эсперанто. Сейчас гугл добавил эсперанто в стандартную клавиатуру, и для меня это не актуально.
Тогда решение было такое: скачать приложение клавиатуры и добавить раскладку для своего языка. Но придётся поддерживать все языки, которые могут понадобиться - ведь исправленное приложение придется подписывать своим сертификатом и будет несовместимо с оригиналом.
Для конкретного приложения - можно разместить внизу формы LinearLayout с кнопками и android:visibility="gone" и открывать/закрывать его вместе/вместо с открытием/закрытием клавиатуры.
Тогда решение было такое: скачать приложение клавиатуры и добавить раскладку для своего языка. Но придётся поддерживать все языки, которые могут понадобиться - ведь исправленное приложение придется подписывать своим сертификатом и будет несовместимо с оригиналом.
Для конкретного приложения - можно разместить внизу формы LinearLayout с кнопками и android:visibility="gone" и открывать/закрывать его вместе/вместо с открытием/закрытием клавиатуры.
Re: Кастомная клавиатура
Замечательный мануал - http://forum.xda-developers.com/showthr ... ?t=2497237 но немного не доработанный.
Re: Кастомная клавиатура
Довольно сложно. Но обычно нужно не убирать ненужные клавиши, а добавлять недостающие.
AIDE добавляет над клавиатурой строку со скобками и другими операторами java, чтобы не нужно было переключать раскладки.
Его наверно сделать проще - добавить на форму компонент, который открывается/закрывается вместе с клавиатурой.
AIDE добавляет над клавиатурой строку со скобками и другими операторами java, чтобы не нужно было переключать раскладки.
Его наверно сделать проще - добавить на форму компонент, который открывается/закрывается вместе с клавиатурой.
Re: Кастомная клавиатура
Simple Custom Keyboard
http://code.tutsplus.com/tutorials/crea ... -cms-22615
http://code.tutsplus.com/tutorials/crea ... -cms-22615
Re: Кастомная клавиатура
Кастомная клавиатура неудобна тем, что придётся поддерживать все языки. Для себя, конечно, можно ограничиться русским и английским.
Мне больше нравится как сделано в AIDE.
Пробовал добавить на форму TextView с образцами вводимого текста.
Добавил OnTouchListener в котором нахожу слово по клику на которое его нужно вставить в активный EditText.
← ↑ → ↓ работают как стрелки.
где keyCode - код клавиши определённой в KeyEvent. Есть коды для стрелок, но кодов для кириллицы там, естественно, нет.
Но
1) onConfigurationChanged() не вызывается при открытии/закрытии клавиатуры - вместе с которой я хочу прятать свой TextView
2) не знаю как вставить в EditText текст как если бы его набирали на клавиатуре, а не добавляли в конец.
PS: по второму пункту: если работать только с EditText, Instrumentation не нужен - нужные методы для вставки текта есть в Editable.
По первому - можно ловить получение и потерю фокуса EditText, причем при получении фокуса можно поменять текст с образцами свой для каждого EditText.
Мне больше нравится как сделано в AIDE.
Пробовал добавить на форму TextView с образцами вводимого текста.
Добавил OnTouchListener в котором нахожу слово по клику на которое его нужно вставить в активный EditText.
← ↑ → ↓ работают как стрелки.
Код: Выделить всё
new Thread(new Runnable() {
@Override
public void run()
{
new Instrumentation().sendCharacterSync(keyCode);
}
}).start();
Но
1) onConfigurationChanged() не вызывается при открытии/закрытии клавиатуры - вместе с которой я хочу прятать свой TextView
2) не знаю как вставить в EditText текст как если бы его набирали на клавиатуре, а не добавляли в конец.
PS: по второму пункту: если работать только с EditText, Instrumentation не нужен - нужные методы для вставки текта есть в Editable.
По первому - можно ловить получение и потерю фокуса EditText, причем при получении фокуса можно поменять текст с образцами свой для каждого EditText.
Re: Кастомная клавиатура
Мне нужна была клавиатура с химическими элементами,поэтому мне по барабану на поддержку языков
Re: Кастомная клавиатура
По любому, тебе кроме химических элементов, нужна стандартная русская и английская клавиатура - они должны быть включены в твою программу, чтобы переключаться между раскладками, а не клавиатурами.
Если тебе нужно только для твоей программы - по-моему, удобнее сделать как я.
Внизу формы добавь два невидимых компонента - listview с таблицей Менделеева и textview с наиболее часто употреблемыми элементами. При получении фокуса edittext, делается видимым textview. Если нужного элемента не видно, делаешь долгий там, клавиатура прячется и открывается listview. По короткому тапу на элемент он вставляется в edittext, по долгому тапу - показывается информация по нему, которую тоже можно вставить в редактор.
Кодировать меньше, чем для настоящей клавиатуры, но применимо только для одного приложения.
Если тебе нужно только для твоей программы - по-моему, удобнее сделать как я.
Внизу формы добавь два невидимых компонента - listview с таблицей Менделеева и textview с наиболее часто употреблемыми элементами. При получении фокуса edittext, делается видимым textview. Если нужного элемента не видно, делаешь долгий там, клавиатура прячется и открывается listview. По короткому тапу на элемент он вставляется в edittext, по долгому тапу - показывается информация по нему, которую тоже можно вставить в редактор.
Кодировать меньше, чем для настоящей клавиатуры, но применимо только для одного приложения.