Spinner是没有点击事件接口的,如果你用setOnClickListener(),程序将会发生运行时异常。一般情况下,无需监控Spinner的点击事件,因为默认的处理方式是点击Spinner出现列表对话框,而某些时候,我们是需要处理点击事件的,比如:我们想在点击Spinner时更新它的列表项,更新完毕之后才显示新的列表框。那么这种情况下用Spinner显然行不通,针对这种情况,我做了一个继承自Spinner含点击事件监控接口的子控件。
代码如下:
import android.content.Context;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Spinner;
/**
* 继承自Spinner的自定义下拉列表框。该下拉列表有如下特点:
* <ol>
* <li>使用{@link #setOnClickMyListener(OnClickMyListener)}可监控点击事件,并可自行实现点击后的响应动作(原来Spinner的响应动作是打开列表选择框)。</li>
* <li>点击事件发生后,默认不再打开列表选择框,如需打开,请调用{@link #performClick()}</li>
* </ol>
* 该控件的目地在于弥补Spinner对于点击事件不能自定义响应的不足,Spinner对应点击的响应有自己的内在方案,
* 对外屏蔽了{@link #setOnClickListener(OnClickListener