一个普通的Android Spinner会在点击时弹出一个选项列表.我想覆盖这个onClick.当用户在某些错误状态期间单击微调器时,我想显示错误消息而不是弹出选项列表.目前,我所能做的只是设置一个OnClickListener,但它的onClick方法不允许我阻止显示选项列表.
从 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
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅来源。希望这可以帮助。
尝试设置a onTouchListener并在onTouch方法中显示弹出窗口并返回true以使用该事件并阻止它传播到视图(在本例中为Spinner).
spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// display your error popup here
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
这应该会阻止"下拉列表"出现.
编辑:忘了提及你也可以在onTouch方法中进行错误状态检查,所以你不要完全禁用微调器.
我会尝试创建一个实现 SpinnerAdapter 的 MySpinnerAdapter 类。在 MySpinnerAdapter 中,查看 getDropDownView 方法。我相信这就是创建弹出视图的地方。您可以检查错误状态,并决定在那里返回不同的视图(尽管它可能在另一个函数中 - >检查文档)...
无论如何,这个答案不是复制粘贴的。只是想吐出一些新想法
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3431 次 |
| 最近记录: |