我想检测用户何时选择Spinner视图,而不是Android中微调器内的项目。也就是说,我想在旋转器打开之前检测事件。我打算在用户选择Spinner时打开另一个Dialog,而不是打开Spinner。
提前致谢,
答案 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;
}
}
};