如何使 TextInputEditText 只读?

Posted

技术标签:

【中文标题】如何使 TextInputEditText 只读?【英文标题】:How To Make TextInputEditText Read-only? 【发布时间】:2019-09-01 17:55:42 【问题描述】:

我正在尝试将 TextInputEditText 设为只读,但光标快速闪烁并触发了点击。

我尝试设置isFocusable = falseisClickable = 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 中的默认下划线颜色

如何使用 PYQT5 使 QTableWidget 单元格只读?

如何使 QSlider 只读?

如何使复选框只读?没有禁用?