如何在spinner视图Android中检测选择事件?

时间:2015-05-22 20:51:01

标签: android

我想检测用户何时选择Spinner视图,而不是Android中微调器内的项目。也就是说,我想在旋转器打开之前检测事件。我打算在用户选择Spinner时打开另一个Dialog,而不是打开Spinner。

提前致谢,

已解决: https://stackoverflow.com/a/30406057/2562459

2 个答案:

答案 0 :(得分:2)

<强>解决:

我使用方法setOnTouchListener()而不是setOnClickListener()解决了这个问题。如果我们尝试使用setOnClickListener(),则返回错误。但是如果我们使用setOnTouchListener()它运行没有问题。请记住使用MotionEvent.ACTION_UP参数来避免许多选择事件:

    mSpinner.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_UP) {
               // TODO - User pressed spinner
            }
            return false;
        }
    });

答案 1 :(得分:1)

Spinner不支持项目点击事件。

试试这个:

spinner.setOnTouchListener(Spinner_OnTouch);
spinner.setOnKeyListener(Spinner_OnKey);

listners:

private View.OnTouchListener Spinner_OnTouch = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            doWhatYouWantHere(); 
        } 
        return true; 
    } 
}; 
private static View.OnKeyListener Spinner_OnKey = new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            doWhatYouWantHere(); 
            return true; 
        } else { 
            return false; 
        } 
    } 
};