studio programacion herramientas fundamentos con avanzado aplicaciones android drop-down-menu android-spinner ontouchlistener

programacion - Cierre de menú desplegable en Spinner en Android



manual de android en pdf (3)

Puedes hacer algo como esto,

boolean bflag=true;//declare it as public spinner.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub if(bflag==true) { //first animation code goes here Toast.makeText(getActivity(), "on", Toast.LENGTH_SHORT).show(); bflag=false; } else { //second animation code goes here Toast.makeText(getActivity(), "off", Toast.LENGTH_SHORT).show(); bflag=true; } return false; } });

Necesito animar un ícono de una flecha al abrir y cerrar un girador en Android. Puedo rotar la flecha al abrir la ruleta: acabo de poner un setOnTouchListener en el Spinner .

El problema surge cuando el menú desplegable está cerrado u oculto, porque no sé cómo configurar un oyente o algo así en esa acción.

Alguien tiene una idea acerca de cómo hacer esto, si es posible?

Muchas gracias por adelantado.


prueba de esta manera

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // // called when spiner will closed } @Override public void onNothingSelected(AdapterView<?> arg0) { // called when spiner will closed } });


No sé por qué Google no puede hacerlo durante tanto tiempo, pero puede resolver el problema de esta manera:

Debe sobrescribir el método protegido "onDetachedFromWindow" para Spinner, hacerlo como método público y llamarlo haciendo clic en el elemento en su CustomSpinnerAdapter.

Por ejemplo:

public class CustomSpinner extends Spinner { Context context = null; public CustomSpinner(Context context) { super(context); } public CustomSpinner(Context context, int mode) { super(context, mode); } public CustomSpinner(Context context, AttributeSet attrs) { super(context, attrs); } public CustomSpinner(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomSpinner(Context context, AttributeSet attrs, int defStyle, int mode) { super(context, attrs, defStyle, mode); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); } }

Espero que sepas cómo crear SpinnerCustomAdapter e insertar este CustomSpinner en xml.