Как сделать TextInputEditText доступным только для чтения?

#android #kotlin #material-design #material-components-android

#Android #kotlin #материал-дизайн #материал-компоненты-android

Вопрос:

Я пытаюсь сделать TextInputEditText доступным только для чтения, но у меня появляется быстрая вспышка курсора, и щелчок срабатывает.

Я попытался установить isFocusable = false и isClickable = false .

Макет XML:

 <com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/label_address"
    android:layout_marginTop="@dimen/material_layout_vertical_spacing_between_content_areas"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@ id/input_address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="actionNext"/>

</com.google.android.material.textfield.TextInputLayout>
  

Код для создания только для чтения:

 fun TextInputEditText.disable() {
    isFocusable = false
    isClickable = false
}
  

Каков правильный способ или правильный метод создания TextInputEditText доступным только для чтения?

Ответ №1:

В XML

Установите атрибут android:enable="false" в TextInputEditText

Код

 <com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Hints"
    android:layout_marginTop="10dp"
    android:layout_margin="40dp">
    <com.google.android.material.textfield.TextInputEditText
        android:id="@ id/input_address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:imeOptions="actionNext"
        android:text="Hi How are you"
        android:textColor="@color/colorPrimary"
        android:textColorHint="@color/colorPrimary" />
</com.google.android.material.textfield.TextInputLayout>
  

Результат:

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

Ответ №2:

Я обычно использую setEnabled(boolean) ссылку ref

Может ли это соответствовать вашим потребностям?

Ответ №3:

XML-код

Вы можете попробовать использовать эти свойства:

 android:textIsSelectable="true"  
android:inputType="none" 
  

Обратите внимание, что android:editable это устарело.

Код Kotlin

Предполагая, что ваше имя переменной равно editText , вы можете попробовать это:

 editText.isEnabled = false
  

Ответ №4:

Попробуйте добавить Edittext.setEnabled(false); или android:editable="false" к вашему представлению.

Комментарии:

1. Просто обновление — android: редактируемый не рекомендуется для этого компонента

Ответ №5:

используйте эти свойства в edittext

 android:clickable="false"  android:cursorVisible="false" android:focusable="false" android:focusableInTouchMode="false"
  

Ответ №6:

Правильный способ сделать это — использовать TextView, и вы можете применить к нему свой EditTextStyle. Но вы не должны реализовывать EditText и использовать его как TextView, помните, что объекты предназначены для удовлетворения конкретных потребностей, поэтому всегда старайтесь найти тот, который лучше всего подходит в зависимости от того, что вы хотите сделать.

Ответ №7:

Попробуйте использовать функцию IsEnabled для вашего TextInputEditText.

input_address.isEnabled = false