Cerrar Spinner en clic fuera de Spinner

Quiero cerrar una ruleta Android una vez que haga clic fuera del Spinner. ¿Eso es posible?

3 Solutions collect form web for “Cerrar Spinner en clic fuera de Spinner”

He tenido algo de suerte con esto, incluso si no funciona completamente.

La vista del obturador del adaptador giratorio:

public View getView(int position, View v, ViewGroup parent) { if (v == null) { LayoutInflater mLayoutInflater = mActivity.getLayoutInflater(); v = mLayoutInflater.inflate(R.layout.user_row, null); } View tempParent = (View) parent.getParent().getParent().getParent(); tempParent.setOnTouchListener(new MyOnTouchListener(mActivity)); mActivity.setOpen(true); User getUser = mUsers.get(position); return v; } 

El oyente de ontouch:

 public class MyOnTouchListener implements OnTouchListener{ private MyActivity mOverall; public MyTouchListener(MyActivity overall) { mOverall = overall; } public boolean onTouch(View v, MotionEvent event) { if (mOverall.getOpen()) { mOverall.getWindow().setContentView(R.layout.main); //reset your activity screen mOverall.initMainLayout(); //reset any code. most likely what's in your oncreate } return false; } } 

El oyente seleccionado del elemento seleccionado:

 public class MySelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { setUser(pos); //or whatever you want to do when the item is selected setOpen(false); } public void onNothingSelected(AdapterView<?> parent) {} } 

La actividad

Su actividad con el spinner debe tener una variable global mOpen con los métodos get y set. Esto es porque el oyente de ontouch tiende para permanecer encendido incluso después de la lista se cierra.

Las limitaciones de este método:

Se cierra si se toca entre la hiladora y las opciones o al lado de las opciones. Tocar por encima de la hiladora y por debajo de las opciones todavía no se cierra.

Tratar

 @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) v.setVisibility(View.GONE); } 

Yo quería ser capaz de determinar cuando el menú de hilandero se muestra, y despedido también. Después de un montón de búsqueda, no había un montón de buenas soluciones. Yo era capaz de lograr esto haciendo lo siguiente:

  1. Se creó una clase de hiladora personalizada y se anula el siguiente método:

     @Override public boolean performClick() { this.isDropDownMenuShown = true; //Flag to indicate the spinner menu is shown return super.performClick(); } 
  2. En mi actividad, anule el método onWindowFocusChanged (boolean hasFocus). Si hasFocus == true && la bandera en # 1 está establecida en true, entonces el spinner ha sido descartado (puede ser por selección o tapping fuera del spinner).

     @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (actionBarSpinner.isDropdownShown() && hasFocus) { actionBarSpinner.setDropdownShown(false); //Do you work here } 

    }

¡Buena suerte!

  • ¿Poner valores de ENUM a la ruleta androide?
  • Android - ¿Cómo añadir un borde inferior (enfocado) a spinner?
  • Androide spinner evento de incendio cuando la misma selección de artículo se hace
  • ¿Cómo obtener una devolución de llamada cuando se desactiva un diálogo emergente de Spinner?
  • Establecer TextSize a un texto en spinner en android programatically
  • ICS Spinner ("desplegable" en lugar de diálogo) en versiones anteriores de Android
  • Cómo rellenar Spinner con ArrayList en Android
  • Android Spinner: ¿Cómo capturar cuando el usuario sale spinner dejando el valor seleccionado como-es?
  • Actionbarsherlock IcsSpinner - el ancho siempre se ajusta a los elementos más amplios
  • Crear un hilandero por programación android
  • Cambiar el contenido de Spinner al abrir
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.