2011-06-08 7 views
40

Orientación Android 2.2Android mediante programación desactivar autocompletar/auto sugerencia para EditarTexto en emulador

He leído las respuestas a las siguientes preguntas:

Turn off autosuggest for EditText?

Android: Multiline & No autosuggest in EditText

me han tratado los siguientes variaciones en las sugerencias:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER); 

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER); 

setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 

Todos estos funcionan en la mayoría de los dispositivos que he probado (Droid X, Droid 2, Thunderbolt, Incredible) pero no funcionan en el emulador y al menos 1 dispositivo (Samsung GT i5500).

¿Hay alguna otra forma de programar desactivar el autocompletar/autosuggest para un EditText de una manera que el emulador y ciertos dispositivos reconocerán y respetarán?

+1

Tenga en cuenta que todos estos son simplemente sugerencias para el editor de métodos de entrada. No es necesario que ningún editor de métodos de entrada los respete. Por lo tanto, está casi garantizado que habrá algunas piezas de hardware, o algunos IME de terceros, que no cumplan con la solicitud. Ahora, esperaría que el * emulator * los honraría, ya que tiene el editor de métodos de entrada estándar, pero tampoco he intentado suprimir las sugerencias. – CommonsWare

+0

@gyoda ¿finalmente pudo encontrar una solución que funcione en el emulador y en todos los dispositivos? – hopia

+0

@hopia Adding android: inputType = "textVisiblePassword" parece funcionar para todos mis casos de uso. Además, asegúrese de que no está utilizando el IME japonés en el emulador. – gyoda

Respuesta

42

Para dispositivos Vodafone 845 (2.1), huawei 8800 (2.2), textVisiblePassword parece prevenir la predicción de palabras.

vendorId.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 

o

androide: inputType = "textVisiblePassword"

+5

Tenga cuidado con esto, en los teclados que no están en inglés, esto puede desactivar algunas de las funciones, como alternar el idioma. – Cookster

+0

Está mostrando cómo hacerlo en código vs hacerlo en el archivo de diseño XML. Pero estás dando diferentes cantidades de banderas. ¿Cuál es la (s) bandera (s) correcta (s) para usar? –

25

En el XML diseño, agregue el siguiente atributo a su EditText:

android:inputType="text|textNoSuggestions" 

Si ni este, ni los anteriores enfoques de trabajo, entonces esto es casi seguro que un problema con el emulador y el otro dispositivo, y debe contactar a los fabricantes directamente.

Consulte también: android:inputType (tenga en cuenta que EditText es una subclase de TextView, por lo que este atributo también trabaja para EditTexts).

+0

Esta respuesta es incorrecta, hay que añadir a su siguiente propiedad XML EditarTexto androide: inputType = "textFilter" – Animesh

+1

Phil, creo que quería decir el archivo XML de la actividad, no AndroidManifest – user674669

+0

respuesta incorrecta – Noman

1

Estaba peleando con el mismo problema en el emulador. Mientras probaba, me di cuenta de que lo que estaba apareciendo no era la autocompleta normal, sino una vista previa especial de caracteres asiáticos (presumiblemente porque requiere varias claves para generar un carácter asiático). Así que resolví esto al configurar el idioma en inglés. Creo que lo que estaba viendo era la opción "Vista previa clave" enumerada en la configuración "IME japonés" en "Idioma & teclado".

Supongo que sería bastante difícil desactivar esto dentro de una aplicación individual sin profundizar en el manejo del teclado y el soporte de idiomas.

-3

La respuesta acceted como correcta es defectuoso.Para desactivar el auto sugiere añadir siguiente propiedad a su XML EditarTexto

android:inputType="textFilter" 
+0

Por favor, lea mi pregunta completa. Ya probé con Android: inputType = "textFilter". – gyoda

2

Puede utilizar el AutoCompleteTextView clase y configurar el adaptador que no contiene nada AutoCompleteTextView Class Reference

ejemplo

public class CountriesActivity extends Activity { 
    protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.countries); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
    AutoCompleteTextView textView = (AutoCompleteTextView) 
      findViewById(R.id.countries_list); 
    textView.setAdapter(adapter); 
    } 

    private static final String[] COUNTRIES = new String[] {""}; 
} 
-1

'oninput' evento en la entrada, ejecutó la función siguiente:

function RefreshAutoComplete(elm) { 
elm.keyup(); 
elm.focus(); 
} 

corro el auto completo de forma manual, y funciona

Gracias a todos por la ayuda

14

He intentado todo lo anterior y ninguna de arriba me ayudó. Tengo buscar a través disponibles InputTypes y he ocurrió una solución, que pasó a ser TYPE_TEXT_FLAG_AUTO_COMPLETE:

mEditText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);

Desde su descripción:

Esto generalmente significa que el método de entrada no debe mostrar los candidatos , pero puede esperar que el editor proporcione sus propios complementos de InputMethodSession.displayCompletions().

no han especificado ninguna terminaciones establecen y como resultado estoy no conseguir ningúnauto-sugerencias.

PS. La bandera InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD mencionada en el comentario anterior también hace este truco, pero también deshabilita alternar el idioma en el teclado.

+0

Parece que esta respuesta debe ser la aceptada. – Michael

+1

Esta es la solución más adecuada, las otras son hacks imo – behelit

+1

Todas las soluciones son chulas, pero creo que esta es la menos hacky :) –

0

Simplemente puede usar el método EditText setThreshold(). Establezca el umbral, digamos 100, cuando no desee mostrar predicciones. Si desea reactivar mostrando predicciones, configúrelo de nuevo en una pequeña int como 1 o 2, según sus necesidades.

+1

EditText no tiene el método setThreshold(). – Dima

1

También puede usar lo siguiente para deshabilitar la sugerencia automática en cualquier texto de edición.

<EditText> 
android:inputType="textNoSuggestions|textVisiblePassword" 
</EditText> 

Esto funcionó para mí.

5

personalmente, este código me ayudan:

autoCompleteTextView.setAdapter(null); 
autoCompleteTextView.setText(address); 
autoCompleteTextView.setAdapter(adapter); 

Quiero desactivar sugerencias cuando me puse de texto así que retire el adaptador y después llamo setText, lo torno.

por lo que si desea desactivar la sugerencia sólo tiene que utilizar:

autoCompleteTextView.setAdapter(null); 
2

Usando android:inputType="textNoSuggestions|textVisiblePassword" para EDITTEXT solucionar el problema.

Cuestiones relacionadas