2013-04-30 18 views
5

Es gibt eine Android-Anwendung, die selbst erstellte Eingabefelder enthält (keine TextView oder EditText Elemente), also muss ich die Tastatur ein-/ausblenden, Benutzereingaben verarbeiten und eingegebene Symbole anzeigen mein eigenes.So deaktivieren Sie programmierbaren Text (ohne EditText)

Ich muss Predictive Text-Modus für die Standardansicht deaktivieren. Leider Android View Klasse (android.view.View) hat keine Funktion setInputType.

Es gibt eine wahrscheinliche Lösung. Holen Sie InputConnection der gegebenen Ansicht und ändern Sie seine Eigenschaften. Aber ich kann nicht finden, wie man Instanz des aktuellen InputConnection erhält und setzt, leider wird auch die Funktion onCreateInputConnection nicht aufgerufen.

Gibt es eine Methode zum Deaktivieren des vorhersagenden Textmodus für die Standardansicht?

Antwort

5

Etwas, das ich verwendet habe, ist unten - speziell das Tag "textNoSuggestions" Ich denke, würde für Sie arbeiten!

<EditText android:layout_marginLeft="10px" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginRight="10px" 
android:id="@+id/setupactivity_ftpsite" 
android:inputType="textNoSuggestions|textUri"> 
+0

Danke, Mike. Die Anwendung enthält jedoch weder TextView- noch EditView-Elemente. –

+0

Ich bin mir nicht sicher, was Sie erreichen wollen. Wenn Sie in ein bearbeitbares Feld tippen oder den Fokus haben, wird die Tastatur angezeigt. Wird sie manuell ohne Eingabefeld mit Fokus angezeigt? Hast du etwas Code? – Mike

+0

Ja. Ich benutze ein selbst erstelltes Eingabefeld, muss Tastatur zeigen und Benutzereingaben selbständig durchführen. –

2

Entschuldigung hier ist die Antwort in einer prägnanteren Art und Weise!

Etwas ähnlich wie diese:

1) zeigt die Tastatur:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(myCustomView, InputMethodManager.SHOW_IMPLICIT); 

2) in myCustomView (erstreckt Ansicht) hinzufügen:

InputConnection onCreateInputConnection (EditorInfo outAttrs) { 
    InputConnection ic = new EditableInputConnection(this); 
    outAttrs.inputType = TYPE_TEXT_FLAG_NO_SUGGESTIONS; 
    outAttrs.initialCapsMode = ic.getCursorCapsMode(outAttrs.inputType); //guess on this 
    return ic; 
} 

Dies ist der Gesamt Kern Was soll getan werden. Vielleicht möchten Sie OR outAttrs.inputType statt gleich setzen, so dass es den Standardzustand beibehält, oder rufen Sie zuerst die Eltern onCreateInputConnection und dann nur Ihre outAttrs.inputType (nicht sicher, ob dies funktioniert oder nicht). Dies sollte Sie hoffentlich näher an Ihre Lösung bringen.

+0

lernen, wie Sie Ihren Code richtig formatieren, bitte. –

Verwandte Themen