【问题标题】:How to display validation error for a spinner widget similar to TextView.setError()如何显示类似于 TextView.setError() 的微调器小部件的验证错误
【发布时间】:2016-06-23 12:57:34
【问题描述】:

如何显示类似于 TextView.setError() 的微调器小部件的验证错误 我不想为每个微调器验证错误打开一个新对话框, android.widget.Spinner 类没有 setError 方法

【问题讨论】:

    标签: android validation spinner


    【解决方案1】:

    如果您的微调器设置了默认项目视图,则 Spinner 类上的 getSelectedView() 方法将返回 TextView。对此,您可以致电setError(CharSequence) 这是我所做的:

    View selectedView = spinner.getSelectedView();
    if (selectedView != null && selectedView instanceof TextView) {
        TextView selectedTextView = (TextView) selectedView;
        if (!valid) {
            String errorString = selectedTextView.getResources().getString(mErrorStringResource);
            selectedTextView.setError(errorString);
        }
        else {
            selectedTextView.setError(null);
        }
    }
    

    Android 4.4 上的结果如下所示:

    【讨论】:

    • 如何设置微调器默认值,因为每次我调用 spinner.getSelectedView() 我都会得到 null ,因为我的微调器上没有选择任何内容。
    【解决方案2】:

    编写 Diederik 代码的一种更简洁的方式:

    static public void setSpinnerError(Spinner spinner, String error){
        View selectedView = spinner.getSelectedView();
        if (selectedView != null && selectedView instanceof TextView) {
            TextView selectedTextView = (TextView) selectedView;
            selectedTextView.setError(error);
        }
    }
    

    如果你想关闭它,只需将 error 设置为 null

    【讨论】:

      【解决方案3】:

      因此,您可以在微调器适配器的 getView 中使用“setError”。当然,如果你的项目的微调器的 xml 有一个 TextView:

      if(requeriedField && item.getValue() == 0){
          img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired));
      }
      

      【讨论】:

        猜你喜欢
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多