EditText不可编辑


68

我正在尝试使用以下代码使EditText不可编辑:

<EditText android:id="@+id/outputResult"
          android:inputType="text"
          android:editable="false"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/result" />

我必须添加以下行以使其不可编辑

android:focusable="false" 

难道我做错了什么?

非常感谢你


知道为什么不能仅与android:editable =“ false”一起使用。谢谢。
Jjreina '02

@Zortkun:这正是OP的要求。
Squonk 2012年

1
@Jjreina:我的猜测是,这是因为您指定了,inputType而这可能会覆盖android:editable="false"设置。我可能是错的。
Squonk'2

MisterSquonk我删除了inputType并可以正常工作,但显示警告消息。此文本字段未指定inputType或提示,非常感谢。现在我添加了android:inputType =“ none”,一切都很好,谢谢大家
Jjreina 2012年

Answers:


173

android:editable="false"应该可以使用,但是已弃用了,您应该android:inputType="none"改用它。

另外,如果您想在代码中执行此操作,则可以执行以下操作:

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setEnabled(false);

这也是一个可行的选择:

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setKeyListener(null);

如果您要使其EditText不可编辑,我建议使用TextView小部件而不是EditText,因为在这种情况下,使用EditText似乎毫无意义。

编辑:更改了一些信息,因为我发现该信息已android:editable被弃用,您应该使用android:inputType="none",但是在android代码上有关于它的错误;所以请检查一下


感谢您使用替代的工作方式,但android:editable =“ false”否
Jjreina 2012年

8
在这种情况下,使用textview效果更好
Haresh Chaudhary

android:enabled="false"如果您还希望输入为灰色,则下面的设置答案会更好。
Ajay

18

我想我来晚了,但是请结合使用以下内容使其有效:

 android:inputType="none"
 android:enabled="false"

2
这应该是公认的答案。android:inputType="none"除非您添加,否则使用不会达到预期的效果android:enabled="false"
Syed Hissaan

13

如果您想使EditText无法通过代码进行编辑:

void disableInput(EditText editText){
    editText.setInputType(InputType.TYPE_NULL);
    editText.setTextIsSelectable(false);
    editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v,int keyCode,KeyEvent event) {
                return true;  // Blocks input from hardware keyboards.
        }
    });
}

如果要删除EditText的水平线,只需添加:

editText.setBackground(null);

如果要让用户复制EditText的内容,请使用:

editText.setTextIsSelectable(true);

10
 <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/editTexteventdate"
            android:background="@null"
            android:hint="Date of Event"
            android:textSize="18dp"
            android:textColor="#fff"
            android:editable="false"
            android:focusable="false"
            android:clickable="false"

            />

加上这个

android:editable =“ false”

android:focusable =“ false”

android:clickable =“ false”

它对我的工作


由于不推荐使用editable,因此请改用:android:inputType =“ none”(以及其他的)。
BlueBoy

1
不是因为它对您有用,它也应该对我们也有用。您在今年5月19日发布了此信息,因此您必须知道您提供了不赞成使用的答案吗?来吧...
霓虹灯Warge

1
用户仍然可以使用paste选项更改的文本EditText
穆罕默德·萨奇布

7

如果您确实要使用editText而不是textView,请考虑使用以下三种方法:

android:focusable="false"

android:clickable="false"

android:longClickable="false"

编辑:“ longClickable”属性禁用导致“粘贴”和/或“全选”选项显示为工具提示的长按操作。




2

如果希望禁用的EditText与启用的EditText看起来相同,则应android:enabled="false"与结合使用android:textColor="..."

这是一个例子:

<com.google.android.material.textfield.TextInputLayout
    ...>

    <com.google.android.material.textfield.TextInputEditText
        ...
        android:text="..."
        android:enabled="false"
        android:textColor="@color/dark_grey"/>

</com.google.android.material.textfield.TextInputLayout>

1

我也有这个问题。

我这样做:

<EditText
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:id="@+id/yourid"
    android:editable="false"
    android:inputType="none" />


0

我的要求是要具有edittext的外观,并在单击时打开一个弹出窗口,但是将其启用为false将不允许单击侦听器。所以我以这种方式做到了。

 <EditText
        android:id="@+id/tvCustomerAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minWidth="80dp"
        android:layout_alignParentEnd="true"
        android:drawableRight="@drawable/arrow_down"
        android:inputType="none"
        android:focusable="false"
        android:clickable="true"
        tools:text="24"/>

0

我无法摆脱适用于Tablet版本SoftKeyboard,并且以下代码片段非常出色。EditText

eText.setEnabled(false);
eText.setFocusable(false);
eText.setActivated(false);
eText.setInputType(InputType.TYPE_NULL);


0
android:inputType="none"
android:enabled="false"
android:clickable="false"

clickable属性是可选的!您仍然可以通过编程将文本设置为编辑文本!


0

如有必要,请尝试删除inputType属性。android:editable="false"工作良好。


0

如果您希望编辑文本可单击但不可编辑,则可以尝试以下操作:

android:cursorVisible="false"
android:inputType="none"
android:clickable="true"
android:focusable="false"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.