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.