Вы можете использовать статический метод UserDictionary.Words.addWord(....)
: Link
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
// On JellyBean & above, you can provide a shortcut and an explicit Locale
UserDictionary.Words.addWord(this, "MadeUpWord", 10, "Mad", Locale.getDefault());
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
UserDictionary.Words.addWord(this, "MadeUpWord", 10, UserDictionary.Words.LOCALE_TYPE_CURRENT);
}
Вам нужно будет добавить это разрешение манифеста:
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
Добавлены слова будут появляться в Settings > Language & input > Personal dictionary
.
Если вы используете свою собственную мягкую клавиатуру, я предлагаю вам пройти через Creating an Input Method. Предложения обычно отображаются в Candidates View
. По умолчанию InputMethodService#onCreateCandidatesView()
возвращает null. Вы должны переопределить этот метод, чтобы вернуть реализацию панели предложений.
Вот пример проекта, который реализует вид кандидатов: SoftKeyboard.
Больше информации:
слов и фраз предложения идут в кандидаты просмотра. Информация о том, как создать &, заселяет его в примерном проекте, упомянутом выше.
Насколько я знаю, выбор того, какие слова/фразы предложить, является ответственностью разработчика. Android не предоставляет их для вас. Вам, вероятно, понадобится набор словарей - по одному для каждого языка/локали, которые вы планируете поддерживать. Вы также можете сохранить словарь пользовательских слов.
по умолчанию клавиатура для Android использует эти: Link
Если вы загрузите один из них, распаковать его и открыть с помощью текстового редактора:
dictionary=main:en,locale=en,description=English,date=1402373178,version=47
word=the,f=222,flags=,originalFreq=222
word=to,f=215,flags=,originalFreq=208
word=of,f=214,flags=,originalFreq=214
word=and,f=212,flags=,originalFreq=212
word=in,f=210,flags=,originalFreq=210
.... 165,635 more lines
Как видно, частота играет решающую роль в определении пригодность слова как предложения. Вероятно, вы не хотите предлагать tachometer
, когда пользователь вводит ta
. Вы, вероятно, do хотите предложить take
- частота помогает вам там.
автоисправление:
word=id,f=99,flags=,originalFreq=99
shortcut=I'd,f=whitelist
Флаги указывают уместность:
word=goddamn,f=0,flags=offensive,originalFreq=62
Даже если вы решите использовать эти словари код для разбора их и получить значимые предложения должны исходить от вас.
Две статьи (оба Питера Kankowski), которые говорят о predictive text input
& spelling correction
:
Using DAWG for predictive text input
Using Ternary DAGs for Spelling Correction
CandidatesView:
Первое, что вы должны знать о CandidatesView : это необязательно. Фактически, LatinIME
(специальная клавиатура по умолчанию для Android) не использует его. Вместо этого LatinIME
имеет собственную реализацию - SuggestionStripView
- что похоже. Поведение InputMethodService#onCreateCandidatesView()
по умолчанию - возврат null. Если вы решите предоставить свою собственную реализацию, не переопределяйте этот метод.
Вам нужно решить, как выглядит ваш кандидат. Одна из возможных реализаций может быть HorizontalScrollView
. После того, как вы оцениваете свои предложения (например, пользователь начинает писать «как», и ваша логика предложений дает вам List<String>
, содержащий «имеет», «было», «помогать», «спрашивать», «спрашивать», «спрашивать», «предположим»), создайте &, добавьте TextViews
, удерживая эти строки до HorizontalScrollView(LinearLayout)
. Таким образом, пользователь может прокручивать по горизонтали и выбирать нужное слово, щелкая по нему.
Вам решать, использовать ли API или обрабатывать CandidatesView
самостоятельно. Если вы хотите использовать API, переопределите InputMetodService#onCreateCandidatesView()
, раздуйте свой собственный макет, а затем верните его. Держите ссылку на нее, поэтому вы можете обновить ее по мере необходимости. Чтобы контролировать видимость, используйте метод setCandidatesViewShown(boolean)
.
Я думаю, вы хотите использовать [AutoCompleteTextView] (http://developer.android.com/reference/android/widget/AutoCompleteTextView.html), вместо этого ... –
Итак, я хочу подтвердить, что AutoCompleteTextView показан ниже EditText, в который мы вводим текст, или его можно использовать выше Клавиатура также как «Предложения», которые показаны непосредственно над макетом клавиатуры. – Kunal
Я не думаю, что есть способ. Я задал аналогичный вопрос раньше и сказал, поскольку он зависит от индивидуальной клавиатуры и ее реализации, и нет никакого способа обеспечить это. (Я хотел скрыть это вместо добавления предложений, но это тот же принцип). И AutoCompleteTextView похож на поле со списком с предложениями. Он не добавляет предложений на клавиатуру. – kha