如何使 TextInputEditText 只读?
Posted
技术标签:
【中文标题】如何使 TextInputEditText 只读?【英文标题】:How To Make TextInputEditText Read-only? 【发布时间】:2019-09-01 17:55:42 【问题描述】:我正在尝试将 TextInputEditText 设为只读,但光标快速闪烁并触发了点击。
我尝试设置isFocusable = false
和isClickable = false
。
XML 布局:
<com.google.android.material.textfield.TextInputLayout
android:layout_
android:layout_
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_
android:layout_
android:imeOptions="actionNext"/>
</com.google.android.material.textfield.TextInputLayout>
只读代码:
fun TextInputEditText.disable()
isFocusable = false
isClickable = false
将TextInputEditText设为只读的正确方法或正确方法是什么?
【问题讨论】:
【参考方案1】:我一般用setEnabled(boolean)
ref link
它可能满足您的需求吗?
【讨论】:
【参考方案2】:在 XML 中
设置属性android:enable="false"
in TextInputEditText
代码
<com.google.android.material.textfield.TextInputLayout
android:layout_
android:layout_
android:hint="Hints"
android:layout_marginTop="10dp"
android:layout_margin="40dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_address"
android:layout_
android:layout_
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>
结果:
【讨论】:
【参考方案3】:尝试将Edittext.setEnabled(false);
或android:editable="false"
添加到您的视图中。
【讨论】:
只是一个更新 - 此组件不推荐使用 android:editable【参考方案4】:XML 代码
您可以尝试使用此属性:
android:textIsSelectable="true"
android:inputType="none"
请注意,android:editable
已弃用。
Kotlin 代码
假设你的变量名是editText
,你可以试试这个:
editText.isEnabled = false
【讨论】:
【参考方案5】:正确的方法是使用 TextView,您可以将它应用到您的 EditTextStyle。但是您不应该实现 EditText 并将其用作 TextView,请记住对象旨在满足特定需求,因此请始终尝试根据您的需要找到最适合的对象。
【讨论】:
【参考方案6】:在edittext中使用这些属性
android:clickable="false" android:cursorVisible="false" android:focusable="false" android:focusableInTouchMode="false"
【讨论】:
【参考方案7】:为您的 TextInputEditText 尝试 isEnabled 函数。
input_address.isEnabled = false
【讨论】:
以上是关于如何使 TextInputEditText 只读?的主要内容,如果未能解决你的问题,请参考以下文章
启用 TextInputLayout = false 后,如何使 TextInputEditText 中的文本变灰?
如何删除material.textfield.TextInputEditText(Material EditText)的边框
如何更改 TextInputEditText 中的默认下划线颜色