Работа с пользовательским интерфейсом требует организации нескольких линий "защиты от дурака". На первой линии защиты от верно или неполно введённых данных стоит визуальное предупреждение пользователя о допущенной им ошибке. Внешний вид визуализации - скорее дело вкуса, чем набор жестких правил. Главное - чтобы пользователь обратил внимание на саму визуализацию и задался хотя бы вопросом "а что это оно выглядит как-то не так?". Дальше есть неплохие шансы на то, что вторая линия защиты уже и не понадобится.
      Вот и пример кода, который решил применить у себя, где проверяются поля ввода на пустые значения и в случае отсутствия введённых данных слева от поля появляется значок предупреждения:

           //Объявляется переменная, реализующая интерфейс onKeyListener. Сразу же в месте объявления и инициализирую её.
           private View.OnKeyListener onKeyListener = new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                     setEditTextEmptyAttention((EditText)v);
                     return false;
                }
           };

           //А вот и сам метод, который проверяет поле на наличие в нём данных и добавляет предупреждающий знак, либо снимает его.
           private void setEditTextEmptyAttention(EditText editText){
                if (editText.getText().length() == 0 || editText.getText().toString().isEmpty() || editText.getText().toString() == ""){
                     editText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_attention, 0, 0, 0);
                } else {
                     editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
                }
           }

      Всё довольно простенько, но чем проще - тем надёжнее. Сам класс, в котором это реализовано имеет поля и методы для хранения списка полей типа EditText, что даёт возможность автоматизировать подключение listener-а к полям и сделать ручную активацию проверки заполнения в случае необходимости как на отдельное поле, так и на всю группу уже включённых в список полей.