如何在 Android 中禁用 EditText

Posted

技术标签:

【中文标题】如何在 Android 中禁用 EditText【英文标题】:How to disable EditText in Android 【发布时间】:2011-08-18 06:23:03 【问题描述】:

如何禁止在 android 中输入 EditText 字段?

【问题讨论】:

在 EditText 输入时禁用键盘? 有两个 editText 字段。第一个用于输入电子邮件。如果电子邮件有效,则启用第二个 editText 字段。但问题是在输入无效电子邮件并单击下一步按钮时在软键盘上,它转到第二个文本字段并且可以输入数据,即使我已经进行了 edittext.setEnabled(false)。我使用的是 android 2.3.1 【参考方案1】:

假设editText是你EditText对象:

editText.setEnabled(false);

【讨论】:

【参考方案2】:

在代码中:

editText.setEnabled(false);

或者,在 XML 中:

android:editable="false"

【讨论】:

【参考方案3】:

在 android 中禁用编辑文本:

editText.setEnabled(false);

【讨论】:

【参考方案4】:

如果你想显示编辑文本但不输入任何值,你可以写edittext.setInputType(0)

【讨论】:

【参考方案5】:

下面的代码在android中禁用了EditText

editText.setEnabled(false);

【讨论】:

只需将edittext 的focusable 属性设置为“false”即可。 【参考方案6】:

我认为它是 android 中的一个错误。它可以通过添加此补丁来修复 :) 检查这些链接 question 1 和 question 2

希望对你有用。

【讨论】:

对于那些宁愿在此处查看代码而不是使用超链接的人:editText.setEnabled(false);,结合editText.setFocusable(false); 将实现此目的。 同样适用于 XML:android:enabled="false"android:focusable="false"。谢谢大家!【参考方案7】:

您可以使用EditText.setFocusable(false) 禁用编辑EditText.setFocusableInTouchMode(true) 启用编辑;

【讨论】:

这是我的问题。我认为在setFocusable(false) 之后我可以翻转 setFocusable(true)... 不是这样的。设置setFocusableInTouchMode(true) 对我有用。【参考方案8】:
edittext.setFocusable(false); 
edittext.setEnabled(false);

InputMethodManager imm = (InputMethodManager)
  getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
  //removes on screen keyboard

【讨论】:

【参考方案9】:

把这个写在父级中:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

例子:

<RelativeLayout 
android:id="@+id/menu_2_zawezanie_rl"
android:layout_
android:layout_
android:layout_below="@+id/menu_2_horizontalScrollView"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:background="@drawable/rame">

<EditText
    android:id="@+id/menu2_et"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/menu2_ibtn"
    android:gravity="center"
    android:hint="@string/filtruj" >
</EditText>
<ImageButton
    android:id="@+id/menu2_ibtn"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:background="@null"
    android:src="@drawable/selector_btn" />

【讨论】:

【参考方案10】:

据我说...如果您已经在 XML 文件中声明了 edittext 并在 XML 文件中设置属性 "android:enabled=false" 并在运行时禁用它,当时在 java 文件中只添加 2 或 3线条

    首先创建对象 声明 EditText et1;

    通过 id 获取

    et1 = (EditText) FindViewById(R.id.edittext1);et1.setEnabled(false);

您可以在运行时通过 java 文件启用或禁用每个控件,在设计时通过 XML 文件启用或禁用。

【讨论】:

【参考方案11】:

只需将 edittext 的可聚焦属性设置为“false”即可。

<EditText
        android:id="@+id/EditTextInput"
        android:layout_
        android:layout_
        android:focusable="false"
        android:gravity="right"
        android:cursorVisible="true">
    </EditText>

以下选项不起作用

在代码中:

editText.setEnabled(false); 或者,在 XML 中: android:editable="false"

【讨论】:

【参考方案12】:

你可以试试下面的方法:

private void disableEditText(EditText editText) 
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 

启用编辑文本:

禁用编辑文本:

它对我有用,希望对你有帮助。

【讨论】:

很好的答案,但可以通过删除正在更改背景颜色的行并添加 editText.setKeyListener(null); 来改进它;【参考方案13】:
Edittext edittext = (EditText)findViewById(R.id.edit);
edittext.setEnabled(false);

【讨论】:

【参考方案14】:

启用:

private void enableEditText() 
    mEditText.setFocusableInTouchMode(true);
    mEditText.setFocusable(true);
    mEditText.setEnabled(true);

禁用:

private void disableEditText() 
    mEditText.setEnabled(false);
    mEditText.setFocusable(false);
    mEditText.setFocusableInTouchMode(false);

【讨论】:

【参考方案15】:

XML editable 属性自 API LEVEL 15 以来已被弃用。

您现在应该使用值为noneinputType 属性。 但是有一个错误使此功能无用。

Here你可以关注问题状态。

【讨论】:

【参考方案16】:

右键单击文本区域并取消勾选可编辑选项:

【讨论】:

欢迎来到 Stack Overflow,Nuwan Bandara。您的答案与 JTextArea 相关,而不是来自 Android Framework 的 EditText。您不太可能为这个问题提供答案。【参考方案17】:

在 EditText 下的 layout.xml 文件中将 inputType 属性设置为 none

【讨论】:

这个什么都不做【参考方案18】:

试试这个 Kotlin 代码,

editField.isEnabled = !editField.isEnabled

【讨论】:

以上是关于如何在 Android 中禁用 EditText的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在 Edittext 中完全禁用复制和粘贴功能

如何在 EditText Android 中禁用退格行​​为?

如何为特定活动禁用Android Soft Keyboard?

如何为特定活动禁用 Android 软键盘?

Android文本输入框EditText禁用分号

如何禁用 EditText 中的 SwiftKey(第三方键盘)行为?