【问题标题】:How can an error message be set for the Spinner in Android?如何为 Android 中的 Spinner 设置错误消息?
【发布时间】:2015-03-29 22:00:22
【问题描述】:

我希望能够像这样调用代码,类似于在 TextView 上设置 setError 的方式:

spinner.setError("Error message");

但是,setError 仅适用于 EditText,不适用于 Spinner。

如果未选择微调器字段,我想通知用户。如何不使用 Toast 执行此类通知?

【问题讨论】:

标签: android android-widget spinner


【解决方案1】:

这个帖子Creating a setError() for the Spinner有几个解决方案:

EdmundYeung99 对我有用,不管你是否使用自己的适配器。 只需将以下代码放入您的验证函数中:

TextView errorText = (TextView)mySpinner.getSelectedView();
errorText.setError("");
errorText.setTextColor(Color.RED);//just to highlight that this is an error
errorText.setText("my actual error text");//changes the selected item text to this

但是,在进行验证时,请确保 Spinner 适配器中至少有一个值。如果没有,就像一个等待填充的空适配器,让你的适配器得到一个空字符串:

ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, new String[]{""});
mySpinner.setAdapter(adapter);

【讨论】:

  • 这对我来说非常有效。花了几个小时寻找一种方法来做到这一点,这是最好的解决方案。
  • 谢谢,很高兴它有帮助!
  • 像魅力一样工作,谢谢
  • 只要 getSelectedView() 不返回 null 就可以工作。
  • 这就是我添加的原因:“但是,在进行验证时,请确保 Spinner 适配器中至少有一个值。如果没有,就像等待填充的空适配器一样,请制作您的适配器得到一个空字符串”
【解决方案2】:

当您使用getSelectedView() 时,Spinner 类将返回一个文本视图。所以你可以间接使用setError()

((TextView)spinner.getSelectedView()).setError("Error message");

结果应该是……

希望对您有所帮助!

【讨论】:

  • 非常好的主意,但如果没有选择任何项目,它就会中断,在这种情况下它会返回 null。
  • 解决方案不会满足所有情况。可能还有其他几个条件和用例。这取决于你如何使用这个 sn-p。 :)
  • 这仅表明微调器有错误。它并没有暗示错误是什么......
  • 我刚刚指出了 setError() 如何与微调器一起使用。即使您也知道设置错误不是显示微调器错误的好方法。我刚刚回答了这个问题。如果您真的想立即显示消息,那您为什么不要求关注它!
【解决方案3】:

Here is a solution 使用隐藏的 TextView 来获取弹出消息,以及微调器中的错误图标。当处于错误状态时,Spinner 如下所示:

当不处于错误状态时,它看起来像这样。

完整的解决方案记录在这里:https://stackoverflow.com/a/29956372/3063884

【讨论】:

    【解决方案4】:

    对于正在寻找 Kotlin 答案的人

    val errorText = spinnerclient.selectedView as TextView
                    errorText.error = "client required"
                    errorText.requestFocus()
                    return@setOnClickListener
    

    焦点已返回,但未显示文本。显示后我会更新

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多