#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