2013-09-09 2 views
1

Мне нужно анимировать значок стрелки при открытии и закрытии счетчика в Android. Я могу вращать стрелку при открытии поворотника: я просто положил setOnTouchListener на Spinner.Закрытие выпадающего списка в Spinner в Android

Проблема возникает, когда выпадающее окно закрыто или скрыто, потому что я не знаю, как установить прослушиватель или что-то в этом роде.

У кого-нибудь есть идея, как это сделать, если это возможно?

Большое спасибо.

ответ

0

попробовать этот путь

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 

      } 
     }); 
+1

уже пробовал, но не работает – noloman

1

Вы можете сделать что-то вроде этого,

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; 
      } 

     }); 
+1

он все еще не работает. При нажатии на любую часть экрана - и, таким образом, Android закрывает счетчик, который не запускается. – noloman

+0

Удивительный подход к достижению вниз вниз/закрытие счетчика –

2

Я не знаю, почему Google не может сделать это так долго, но вы можете решить эту проблему таким образом:

Вы должны переопределить защищенный метод «onDetachedFromWindow» для Spinner, сделать его общедоступным методом и вызвать его, нажав на t он элемент в вашем CustomSpinnerAdapter.

Например:

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(); 
     } 
    } 

Я надеюсь, что вы знаете, как создать SpinnerCustomAdapter и вставить этот CustomSpinner в XML.