21

我想为setErrormy 设置一个方法EditText,使用自定义图标而不是默认的 Android 图标。所以我尝试了这个:

((EditText)findViewById(R.id.edtTitle)).setError(getResources().getText(R.string.errEmptyTitle), 
         getResources().getDrawable(R.drawable.ico_warning_small);

它向我显示了自定义消息,但没有显示自定义图标。我也试过这个:

Drawable warning = (Drawable)getResources().getDrawable(R.drawable.ico_warning_small);
((EditText)findViewById(R.id.edtTitle))
      .setError(getResources().getText(R.string.errEmptyTitle), warning);

几乎一样,但我还是决定试一试。然而,这也没有帮助 - 我仍然看不到图标。我尝试使用其他一些 Android 系统图标,只是想看看我是否看到它们,不,我也没有看到它们。

那么我做错了什么?有没有办法设置那个自定义图标?

4

4 回答 4

48

在 setError 中使用它之前,您需要在 drawable 上设置边界。

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
editText.setError("error", drawable);
于 2014-04-21T18:13:49.507 回答
8

如果您根本不想显示任何图标,请使用

editText.setError("error", null);
于 2017-02-17T15:31:37.803 回答
4

这个问题在这里讨论和解决:

EditText setError() 带有图标但没有弹出消息

我希望通过扩展答案,它不会自动转换为评论。

于 2012-12-05T10:09:07.667 回答
2
    Drawable customErrorDrawable = getResources().getDrawable(R.drawable.error_icon);
        customErrorDrawable.setBounds(0, 0, customErrorDrawable.getIntrinsicWidth(), customErrorDrawable.getIntrinsicHeight());


 editText.setError("please enter data",customErrorDrawable);
于 2018-05-14T15:21:59.167 回答