在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。

在代码中,我设置android:enabled="false"。

虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。

我应该设置什么来禁用EditText?


当前回答

使用此选项可禁用用户输入

android:focusable="false"

android:editable="false"此方法已弃用。

其他回答

有多重是如何实现多重伤残的。

editText.setShowSoftInputOnFocus(假);和editText.setFocusable

防止编辑文本在某些文本中显示键盘书写。但光标仍然可见,用户可以粘贴一些文本。

editText.setCursorVisible(假)

隐藏光标。我不知道你为什么要这么做。用户可以输入文本和粘贴。

editText.setKeyListener(空)

我觉得这样最方便。没有办法用户如何输入文本,但小部件仍然与OnClickListener工作,如果你想触发操作时,用户触摸它

editText.setEnabled(假);

完全禁用EditText。它是字面上的“只读”,用户不能在其中输入任何文本,(例如)OnClickListener不能与它一起工作。

文本编辑文档

我相信正确的方法是设置android:editable="false"。

如果你想知道为什么我的链接指向TextView的属性,你的答案是,因为EditText从TextView继承:

EditText是一个薄薄的贴面 配置自身为的TextView 可编辑的。

更新: 正如下面的评论中提到的,editable已弃用(从API级别3开始)。您应该使用inputType(值为none)。

禁用=焦点+点击+光标

禁用焦点、单击和光标可见性对我来说很管用。

下面是XML格式的代码

<EditText
    android:id="@+id/name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:cursorVisible="false"
    android:clickable="false"
    />

要禁用EditText的功能,只需使用:

EditText.setInputType(InputType.TYPE_NULL);

如果你想以某种方式启用它,那么你可以使用:

EditText.setInputType(InputType.TYPE_CLASS_TEXT);

这对我来说很管用:

Android:focusable=“false”