在Android中打开和关闭微调器时,我需要设置箭头图标的动画。
打开微调器时我可以旋转箭头:我只是在setOnTouchListener
上放了一个Spinner
。
当下拉菜单关闭或隐藏时,问题就出现了,因为我不知道如何在该操作上设置监听器或类似内容。
如果可能,任何人都知道如何做到这一点?
提前多多感谢。
答案 0 :(得分:2)
我不知道谷歌为什么不能这么做,但你可以这样解决问题:
您必须为Spinner覆盖受保护的方法“onDetachedFromWindow”,将其作为公共方法,并通过单击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并在xml中插入此CustomSpinner。
答案 1 :(得分: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;
}
});
答案 2 :(得分: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
}
});