我正在使用具有新风格的Spinner
Base.Widget.AppCompat.Spinner.Underlined
我可以看到下划线,当我选择选项时,线条会以强调色显示。
问题在于,我无法找到一种方法来显示红色下划线的错误,例如谷歌为出生日期的所有应用程序所做的事。例如。
要查看错误,请尝试在任何Google应用中添加新帐户。它会询问您的出生日期。输入无效日期,然后按下一步。
有没有办法在不使用第三方MaterialSpinner
库的情况下执行此操作?
答案 0 :(得分:1)
首先:您在设备上创建新Google帐户时看到的不同页面只是WebView
。所以他们没有使用本机组件/小部件。
默认情况下,Spinner
窗口小部件没有像EditText
这样的setError(...)方法(顺便说一下,它来自TextView
)。因此,要在Spinner中显示错误,您必须先获取当前所选项目的视图,然后将其转换为TextView(请参阅this answer)。
注意:如果您使用的是根元素不是TextView的布局,则会发生ClassCastException。
以下是此方法的结果:它不会显示示例中的错误消息或TextInputLayout
的错误消息。
因此,为了达到预期的效果,您必须使用第三方库或自己实现它。
进一步说明:如果您查看source code库的MaterialSpinner,可以看到它扩展了AppCompatSpinner
类并添加了其他方法,例如您提到的setError
方法。如果查看onDraw(...)方法,可以看到错误的显示方式。