¿Cómo puedo evitar que el menú desplegable de autocompletado aparezca cuando el texto esté programado?
Tengo un AutoCompleteTextView en mi diseño. También tengo una manera alternativa de seleccionar los mismos artículos que están presentes en el AutoCompleteTextView. Cuando se selecciona la forma alternativa, relleno el valor en AutoCompleteTextView a través de:
autoCompleteTextView.setText(valueFromAlternativeSource);
Donde valueFromAlternativeSource
es una de las opciones automáticas completas válidas. El problema con esto es que la lista desplegable de autocompletar aparece cuando se llama a setText. Poner la siguiente línea después de lo anterior no funciona:
- DisplayListCanvas se inicia en unbender RenderNode (sin mOwningView)
- Cómo agregar indicador de carga a AutoCompleteTextView
- ¿Cómo restringir el menú desplegable AutoCompleteTextView?
- Coloque Snackbar en el orden z más alto para evitar ser bloqueado por AutoCompleteTextView desplegable
- Adaptador MultiAutoCompleteTextView notifyDataSetChanged
autoCompleteTextView.dismissDropDown(); //Doesn't work. Why?
¿Alguna idea acerca de por qué descartar el menú desplegable no funciona o de otras maneras que podría despedir el menú desplegable?
- AutoCompleteTextView: quita el teclado suave en la parte posterior de la prensa en lugar de sugerencias
- Comportamiento personalizado de AutoCompleteTextView
- Google Place API - autocompletar - cómo obtener código postal?
- AutoCompleteTextView no muestra ningún elemento desplegable
- AutoCompleteTextView no funciona cuando introdujo el primer carácter
- Falta el diccionario predeterminado en AutoCompleteTextView / MultiAutoCompleteTextView
- Cambiar filtro AutoCompleteTextView de "startsWith" a "Contains"?
- AutoCompleteTextView con Google Places mostrado en ListView al igual que Uber
Esto funciona bien para mí y es menos complejo:
ListAdapter adapter = autoCompleteTextView.getAdapter(); autoCompleteTextView.setAdapter(null); autoCompleteTextView.setText("whatever"); autoCompleteTextView.setAdapter(adapter);
Parece que es un problema del orden cómo se procesan los mensajes. Mi trabajo alrededor se parece a esto:
//autoCompleteTextView.dismissDropDown(); new Handler().post(new Runnable() { public void run() { autoCompleteTextView.dismissDropDown(); }});
Si desea admitir API <17, Subclase AutoCompleteTextview y reemplazar el método setText(text, filter)
@Override public void setText(CharSequence text, boolean filter) { if(Build.VERSION.SDK_INT>=17) { super.setText(text, filter); }else{ if(filter){ setText(text); }else{ ListAdapter adapter = getAdapter(); setAdapter(null); setText(text); if(adapter instanceof ArrayAdapter) setAdapter((ArrayAdapter) adapter); else setAdapter((CursorAdapter) adapter); //if you use more types of Adapter you can list them here } } }
Luego, cuando quiera configurar el texto manualmente, llame a setText(text, false)
Mi solución (pero no me gusta, debe haber algo mejor):
autoCompleteTextView.setText(valueFromAlternativeSource); autoCompleteTextView.setDropDownHeight(0); autoCompleteTextView.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { autoCompleteTextView.setDropDownHeight(LayoutParams.WRAP_CONTENT); } }
autoCompleteTextView.setText(valueFromOtherMeans, filter); * @param filter If <code>false</code>, no filtering will be performed * as a result of this call.
- Dos actividades principales en AndroidManifest.xml
- Consultar proveedor de contenido de Android desde la línea de comandos (shell de anuncios)