Sie können die statische Methode 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);
}
Sie müssen diese Berechtigung Manifest hinzuzufügen:
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
Hinzugefügte Wörter in Settings > Language & input > Personal dictionary
angezeigt.
Wenn Sie Ihre eigene Soft-Tastatur implementieren, empfehle ich Ihnen, gehen Sie Creating an Input Method. Die Vorschläge werden normalerweise in der Candidates View
gezeigt. Standardmäßig gibt InputMethodService#onCreateCandidatesView()
null zurück. Sie sollten diese Methode überschreiben, um die Implementierung der Vorschlagsleiste zurückzugeben.
Hier ist ein Beispielprojekt, das die Ansicht "Kandidaten" implementiert: SoftKeyboard.
Mehr Informationen:
Wort- und Satzvorschläge gehen in den Kandidaten sehen. Informationen darüber, wie Sie & erstellen können, befinden sich in dem oben genannten Beispielprojekt.
Soweit ich weiß, ist die Auswahl der Wörter/Phrasen die Verantwortung des Entwicklers. Android bietet diese nicht für Sie an. Sie werden wahrscheinlich eine Reihe von Wörterbüchern benötigen - eines für jede Sprache/Ländereinstellung, die Sie unterstützen möchten. Sie können auch ein Wörterbuch mit benutzerdefinierten Wörtern pflegen.
Androids Standard-Tastatur verwendet diese: Link
Wenn Sie eins von diesen herunterladen, entpacken und öffnen Sie mit einem Texteditor:
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
Wie ersichtlich, wird die Frequenz spielt eine zentrale Rolle, die die bei der Bestimmung Eignung eines Wortes als Vorschlag. Wahrscheinlich möchten Sie nicht tachometer
vorschlagen, wenn der Benutzer ta
eingibt. Sie wahrscheinlich tun möchten vorschlagen take
- Frequenz hilft Ihnen dort.
Autokorrektur:
word=id,f=99,flags=,originalFreq=99
shortcut=I'd,f=whitelist
Die Flaggen zeigen Angemessenheit:
word=goddamn,f=0,flags=offensive,originalFreq=62
Selbst wenn Sie diese Wörterbücher verwenden entscheiden, wird der Code, sie zu analysieren und sinnvolle Vorschläge erhalten wird, von Ihnen kommen.
Zwei Artikel (beide von Peter Kankowski), die über predictive text input
& spelling correction
sprechen:
Using DAWG for predictive text input
Using Ternary DAGs for Spelling Correction
CandidatesView:
Das erste, was Sie über die CandidatesView wissen sollten : Es ist optional. In der Tat, LatinIME
(Android-Standard-Soft-Tastatur) verwendet es nicht. Stattdessen hat LatinIME
eine eigene Implementierung - SuggestionStripView
- die ähnlich ist. Das Standardverhalten von InputMethodService#onCreateCandidatesView()
ist, null zurückzugeben. Wenn Sie Ihre eigene Implementierung bereitstellen möchten, überschreiben Sie diese Methode nicht.
Sie müssen entscheiden, wie Ihre CandidatesView aussehen soll. Eine mögliche Implementierung kann ein HorizontalScrollView
sein. Nachdem Sie Ihre Vorschläge ausgewertet haben (zum Beispiel, Benutzer beginnen zu schreiben "as", und Ihre Vorschlagslogik gibt Ihnen eine List<String>
enthält "hat", "war", "assist", "fragen", "gefragt", "fragen", "nehme an"), erstellen Sie &, fügen Sie TextViews
hinzu und halten Sie diese Zeichenfolgen an die HorizontalScrollView(LinearLayout)
. Auf diese Weise kann der Benutzer horizontal blättern und das gewünschte Wort auswählen, indem er darauf klickt.
Es liegt an Ihnen zu entscheiden, ob Sie die API verwenden oder die CandidatesView
selbst behandeln. Wenn Sie die API verwenden möchten, überschreiben Sie InputMetodService#onCreateCandidatesView()
, blähen Sie Ihr benutzerdefiniertes Layout auf, und geben Sie es zurück. Halten Sie einen Verweis darauf, damit Sie ihn bei Bedarf aktualisieren können. Verwenden Sie zur Steuerung der Sichtbarkeit CandidatesView's
die Methode setCandidatesViewShown(boolean)
.
Ich denke, Sie möchten eine [AutoCompleteTextView] (http://developer.android.com/reference/android/widget/AutoCompleteTextView.html) verwenden, stattdessen ... –
So möchte ich bestätigen, dass AutoCompleteTextView unten angezeigt wird EditText, in dem wir Text eingeben, oder es kann oben Tastatur auch als "Suggestions" verwendet werden, die direkt über Tastaturlayout angezeigt werden – Kunal
Ich glaube nicht, dass es einen Weg gibt. Ich habe vorher eine ähnliche Frage gestellt und mir wurde gesagt, da es von der einzelnen Tastatur und ihrer Implementierung abhängt, gibt es keine Möglichkeit, dies durchzusetzen. (Ich wollte es verstecken, anstatt Vorschläge hinzuzufügen, aber es ist das gleiche Prinzip). Und AutoCompleteTextView ist wie ein Kombinationsfeld mit Vorschlägen. Es fügt der Tastatur selbst keine Vorschläge hinzu. – kha