Android中有错误的微调器

时间:2016-09-30 13:28:39

标签: android spinner

我正在使用具有新风格的Spinner

Base.Widget.AppCompat.Spinner.Underlined

我可以看到下划线,当我选择选项时,线条会以强调色显示。

问题在于,我无法找到一种方法来显示红色下划线的错误,例如谷歌为出生日期的所有应用程序所做的事。例如。

要查看错误,请尝试在任何Google应用中添加新帐户。它会询问您的出生日期。输入无效日期,然后按下一步。

有没有办法在不使用第三方MaterialSpinner库的情况下执行此操作?

Screenshot of Google app

1 个答案:

答案 0 :(得分:1)

首先:您在设备上创建新Google帐户时看到的不同页面只是WebView。所以他们没有使用本机组件/小部件。

默认情况下,Spinner窗口小部件没有像EditText这样的setError(...)方法(顺便说一下,它来自TextView)。因此,要在Spinner中显示错误,您必须先获取当前所选项目的视图,然后将其转换为TextView(请参阅this answer)。
注意:如果您使用的是根元素不是TextView的布局,则会发生ClassCastException。

以下是此方法的结果:它不会显示示例中的错误消息或TextInputLayout的错误消息。
因此,为了达到预期的效果,您必须使用第三方库或自己实现它。

进一步说明:如果您查看source code库的MaterialSpinner,可以看到它扩展了AppCompatSpinner类并添加了其他方法,例如您提到的setError方法。如果查看onDraw(...)方法,可以看到错误的显示方式。