Search code examples
androidandroid-edittextandroid-textinputlayout

Only Error icon is visible while setting error to EditText in InputTextLayout


When user enter invalid email or mobile while registration, I am setting error to EditText.

Please check below code:

    <android.support.design.widget.TextInputLayout
        android:id="@+id/txt_input_mobile_number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <EditText
            android:id="@+id/input_mobile_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Mobile number"
            android:maxLength="10"
            android:inputType="number"
            android:maxLines="1"/>

    </android.support.design.widget.TextInputLayout>

MyFragment.java implements below OnKeyListener:

 @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
            // perform validation of data here
            switch (v.getId()) {

                case R.id.input_mobile_number:
                    EditText editMobile = (EditText)getActivity().findViewById(R.id.input_mobile_number);
                    Editable phone = binding.inputMobileNumber.getText();
                    if (phone != null && isValidMobile(phone.toString())) {
                        editMobile.setError("Please enter valid mobile number");
                        editMobile.requestFocus();
                    }
                    break;
            }
            return true;
        }
        return false;
    }

Below screenshot displays, Only error icon is visible not error box like other one:

with only symbol enter image description here

with error prompt

enter image description here


Solution

  • You should use TextInputLayout instead of EditText for your Requirement .

    TextInputLayout tilObj = (TextInputLayout) findViewById(R.id.txt_input_mobile_number);
    tilObj .setErrorEnabled(true);
    tilObj .setError("Please enter valid mobile number");