Показывать ошибку TextInputEditText, когда setEnabled (false)

В настоящее время у меня есть TextInput, который показывает, что счетчик необходим как ошибка после выбора местоположения счетчика. Эта часть работает, но я также хотел бы, чтобы ошибка показывала, когда местоположение все еще нужно выбрать. Когда я делаю TextInput недоступным для редактирования, ошибка не отображается, и я не могу ее увидеть или щелкнуть по ней. Я попытался использовать setFocusable(), но это позволяет редактировать текст.

    if (curr_position != 0) {
        quantity_field.setEnabled(true);
        quantity_field.requestFocus();
        quantity_field.setError(quantities[parent.getSelectedItemPosition()]);
    } else {
        quantity_field.setError("Select location first.");
        quantity_field.setEnabled(false);
    }

По сути, я хотел бы отключить все части TextInput, кроме ошибки.


person FredJacobs    schedule 19.03.2021    source источник


Ответы (1)


Вы пытались установить свой app:errorEnabled="true" в качестве атрибута TextInputLayout и установить для clickable, cursorVisible, focusable, focusableInTouchMode значение false из вашего XML-файла?

<android.support.design.widget.TextInputLayout
    android:id="@+id/quantity_field"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:errorEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/quantity_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="false" 
        android:cursorVisible="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false"
        android:hint="Location:" />

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

Код:

if (curr_position != 0)
    quantity_field.setError("Select location first.");
else
    quantity_field.setError(null); // hides the error and reset the tint
person Ric17101    schedule 19.03.2021
comment
Спасибо за ответ! Я попытался сделать что-то подобное на Java. Я также попробовал способ, который вы предложили, но он все еще не дает желаемого результата. Я не хочу, чтобы пользователь мог щелкнуть или ввести какие-либо данные в поле количества, пока не будет выбрано местоположение, но я хочу, чтобы пользователь видел сообщение об ошибке из количества. То, что у меня есть, обрабатывает первую часть, но не вторую. Способ, который вы предлагаете, обрабатывает второй, но не первый. - person FredJacobs; 23.03.2021