Cómo ocultar spinner dropdown android
Quiero ocultar la ventana emergente de spinner en el clic exterior. Si la ventana emergente está abierta y el usuario presiona la actividad de la tecla de inicio, se minimizará de modo que cuando el usuario vuelva a abrir la aplicación, el mensaje emergente de alerta debería desaparecer.
¿Hay alguna manera de lograr esto. Gracias
Editar: – La ventana emergente no se personaliza. Por lo tanto, no puedo ocultarlos en los métodos onPause
o onResume
.
- Spinner con sub-spinner no funciona como se esperaba
- ¿Cómo se puede utilizar un marcador de posición de carga que es un spinner animado con cargadores de imágenes como Glide, Picasso etc?
- Cómo alinear el texto en Spinner para android?
- Cómo mantener onItemSelected de disparar en un Spinner recién instanciado?
- Cómo crear androide spinner sin triángulo hacia abajo en el lado derecho del widget
- Spinner onItemSelected llamado erróneamente (sin acción del usuario)
- Android: menú desplegable de Spinner con el elemento seleccionado en la posición superior
- Crear un hilandero por programación android
- Android Spinner Dropdown flecha que no se muestra
- Actionbarsherlock IcsSpinner - el ancho siempre se ajusta a los elementos más amplios
- Establecimiento de hilanderos en fragmento
- Spinner con vista diferente para cada elemento
- Cómo establecer la posición en el hilandero?
Bueno, es un poco complicado de lo que pensaba.
Estoy agregando los detalles paso a paso aquí. Trate de seguirlo. Yo era capaz de lograr esto en api nivel 10.
Y esta solución supone que se supone que se debe cerrar el diálogo de solicitud de programación cuando el usuario hace clic en el botón Inicio o Si tuvo que pasar a la siguiente actividad sin interacción del usuario
El primer paso es crear un Spinner personalizado extendiendo la Clase Spinner. Digamos que he creado una clase llamada CustomSpinner en el paquete com.bts.sampleapp
Mi clase de CustomSpinner se parece a esto,
package com.bts.sampleapp; import android.content.Context; import android.util.AttributeSet; import android.widget.Spinner; public class CustomSpinner extends Spinner{ Context context=null; public CustomSpinner(Context context) { super(context); this.context=context; } public CustomSpinner(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomSpinner(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); } }
Ahora en su archivo Xml, reemplace el elemento Spinner por este hilandero personalizado,
<com.bts.sampleapp.CustomSpinner android:id="@+id/spin" android:layout_width="wrap_content" android:layout_height="wrap_content" />
El siguiente paso es inicializar y establecer el adaptador a este hilandero en su clase de actividad,
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CustomSpinner spin=null; spin=(CustomSpinner)findViewById(R.id.spin); spin.setAdapter(spinnerAdapter); //you can set your adapter here. }
El paso final es cerrar el diálogo cuando el usuario hace clic en HomeButton o cuando la actividad se mueve al fondo. Para hacer esto, anulamos la onPause () como esto,
@Override protected void onPause() { Log.i("Life Cycle", "onPause"); spin.onDetachedFromWindow(); super.onPause(); }
Ahora dentro de la onPause () llama al método spin.onDetachedFromWindow();
Que hace el trabajo de cerrar el diálogo del aviso para usted.
También llama a spin.onDetachedFromWindow();
Desde cualquier lugar dentro de la Acitivity debe cerrar el cuadro de diálogo Spinner si está abierto.
Basado en la respuesta de Andro, es posible que prefiera la reflexión para poder llamar al método protegido onDetachedFromWindow. Entonces no tienes que subclasificar Spinner, adaptar el diseño, etc.
/** * Hides a spinner's drop down. */ public static void hideSpinnerDropDown(Spinner spinner) { try { Method method = Spinner.class.getDeclaredMethod("onDetachedFromWindow"); method.setAccessible(true); method.invoke(spinner); } catch (Exception e) { e.printStackTrace(); } }
- Puede activar la actividad como tema de diálogo.
-
Anular el método onPause .
Protected void onPause () {super.onPause (); Este.acabado (); }
Spinner.clearFocus ();
Esta es la línea simple para cerrar spinner programlytically
- ¿Cómo encontrar el nombre del país desde el nombre de la ciudad en Java?
- Android: archivo de acceso desde la pantalla de activos \ PDF