2013-04-30 10 views
5

C'è un'applicazione Android che contiene un campo di input creato dall'utente (no TextView o EditText elementi), quindi devo mostrare/nascondere la tastiera, gestire l'input dell'utente e mostrare i simboli inseriti il mio.Come disabilitare il testo predittivo a livello di programmazione (senza EditText)

Devo disabilitare la modalità di scrittura intuitiva per la visualizzazione standard. Sfortunatamente la classe Android View (android.view.View) non ha alcuna funzione setInputType.

Esiste una soluzione probabile. Ottieni InputConnection di una determinata vista e modifica le sue proprietà. Ma non riesco a trovare come ottenere e impostare l'istanza di corrente InputConnection, purtroppo la funzione onCreateInputConnection non viene chiamata neanche.

Esiste un metodo per disabilitare la modalità di scrittura intuitiva per la visualizzazione standard?

risposta

5

Qualcosa che ho usato è sotto - in particolare il tag "textNoSuggestions", penso che potrebbe funzionare per voi!

<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

Grazie, Mike. Tuttavia, l'applicazione non include né gli elementi 'TextView' né' EditView'. –

+0

Non sono sicuro di cosa stai cercando di realizzare. Quando tocchi o hai il focus in un campo modificabile, la tastiera mostrerà. Lo stai mostrando manualmente senza nessun campo di input che ha lo stato attivo? Hai del codice? – Mike

+0

Sì. Sto usando il campo di input auto-creato, quindi devo mostrare la tastiera e gestire l'input dell'utente da solo. –

2

Siamo spiacenti, la risposta è più concisa!

Qualcosa di simile a questo:

1) mostra la tastiera:

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

2) in myCustomView (estende vista), aggiungere:

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; 
} 

Questo è il senso generale di cosa dovrebbe essere fatto. Si consiglia O outAttrs.inputType anziché impostare uguale in modo da preservare lo stato predefinito o chiamare prima onCreateInputConnection padre e quindi impostare outAttrs.inputType (non è sicuro se funzionerà o meno). Speriamo che questo ti porti abbastanza vicino alla tua soluzione.

+0

impara come formattare il tuo codice correttamente, per favore. –

Problemi correlati