当点击一个普通的Android Spinner 时,会弹出一个选项列表。我想要重写它的onClick方法。当用户在某些错误状态下点击Spinner时,我希望显示一个错误信息而不是弹出选择列表。目前,我只能设置一个OnClickListener,但它的onClick方法不能阻止选项列表的出现。
当点击一个普通的Android Spinner 时,会弹出一个选项列表。我想要重写它的onClick方法。当用户在某些错误状态下点击Spinner时,我希望显示一个错误信息而不是弹出选择列表。目前,我只能设置一个OnClickListener,但它的onClick方法不能阻止选项列表的出现。
onTouchListener
,在onTouch
方法中显示您的弹出窗口并返回true
以消耗事件并阻止其传播到视图(在此情况下为Spinner)。spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// display your error popup here
return true;
}
});
这应该可以防止“下拉列表”出现。
编辑:忘记提到您也可以在onTouch
方法中进行错误状态检查,以便您不完全禁用下拉列表。
继承Spinner并覆盖performClick()方法,如下所示:
@Override
public boolean performClick() {
if(errorOccured) {
// show validation message
return true; // the event is handled by ourselves
}
else {
return super.performClick(); // show spinner dialog
}
}
更多详细信息请查看来源。希望这可以帮助。
public class yourActivity extends Activity
{
private class MySpinnerAdapter implements SpinnerAdapter
{
// There are quite a lot of methods you need to implement...
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
// Check your error states here
if(<we have some kind of error>)
return specialErrorView // you get the idea
// return the default view with options
return normalView;
}
}
}