Android setError (): сообщение об ошибке, визуально указывающее на неправильное поле

#android #android-edittext

#Android #android-edittext

Вопрос:

Я использую setError() для отображения ошибок проверки. В одном случае поле находится близко к левой части экрана, когда появилось сообщение об ошибке, оно визуально указывало на неправильное EditText поле — вместо указания на поле, показывающее 1234, оно действительно должно указывать на пустое поле слева, см. прилагаемый снимок экрана. Кто-нибудь знает решение этой проблемы? Спасибо!

Снимок экрана был сделан на телефоне Galaxy 3 под управлением Android 4.4.2.

введите описание изображения здесь

Ответ №1:

У меня есть один обходной путь, добавьте n для форматирования сообщения и уменьшите ширину каждой строки:

 text1.setError("this field mustnbe 1 characternin length");
  

Ответ №2:

Это решение вашей проблемы.. Попробуйте это..

 EditText edt1=(EditText) findViewById(R.id.editText2);
    EditText edt2=(EditText) findViewById(R.id.editText3);
    EditText edt3=(EditText) findViewById(R.id.editText1);
    // Reset errors.
    edt1.setError(null);
    edt2.setError(null);
    edt3.setError(null);

    String  txt3 = edt3.getText().toString().trim();
    String  txt1 = edt1.getText().toString().trim();
    String txt2=edt2.getText().toString().trim();
    boolean cancel = false;
    View focusView = null;
    if (TextUtils.isEmpty(txt3)) {
        edt3.setError(getString(R.string.error_field_required));
        focusView = edt3;
        cancel = true;
    }
    if (TextUtils.isEmpty(txt2)) {
        edt2.setError(getString(R.string.error_field_required));
        focusView = edt2;
        cancel = true;
    }

    if (TextUtils.isEmpty(txt1)) {
                edt1.setError(getString(R.string.error_field_required));
                focusView = edt1;
                cancel = true;
            }



            if (cancel) {

                focusView.requestFocus();
            } else {

                               //do the operations you want do here

            }