EditText不可编辑

时间:2012-02-27 18:26:00

标签: android android-edittext

我正在尝试使用此代码将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" 

我做错了吗?

非常感谢你

16 个答案:

答案 0 :(得分:116)

android:editable="false"应该有效,但是it is deprecated,您应该使用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代码上有一个错误;所以请检查this

答案 1 :(得分:7)

如果您想从代码中编辑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);

答案 2 :(得分:6)

 <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"

            />
  

添加此

机器人:编辑=&#34;假&#34;

机器人:可聚焦=&#34;假&#34;

机器人:可点击=&#34;假&#34;

为我工作

答案 3 :(得分:5)

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

android:focusable="false"

android:clickable="false"

android:longClickable="false"

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

答案 4 :(得分:4)

我想我迟到了,但是一起使用它来使它工作:

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

答案 5 :(得分:2)

在你的xml edittext中添加以下行。

android:editable="false"
android:focusable="false"
android:clickable="false"

它为我工作

答案 6 :(得分:1)

我也有这个问题。

我这样做了:

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

答案 7 :(得分:1)

使用此:

EditText edtText = (EditText) findViewById(R.id.yourEditTextId);

edtText.setEnabled(false);

  

您也可以在xml文件中使用它。

答案 8 :(得分:1)

android:enabled = false

将该行包含在布局xml文件中。

答案 9 :(得分:1)

如果您希望禁用的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>

答案 10 :(得分:0)

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

data

答案 11 :(得分:0)

我无法摆脱 Tablet版本中使用过的EditText SoftKeyboard ,下面的代码片段很好地完成了这项工作。

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

答案 12 :(得分:0)

在您的编辑文本中设置此属性。

<EditText
         android:editable="false"
     />

答案 13 :(得分:0)

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

clickable属性是可选!您仍然可以设置文本以编程方式编辑文本!

答案 14 :(得分:0)

如果没有必要,请尝试删除inputType属性。 android:editable="false"正常。

答案 15 :(得分:0)

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

android:cursorVisible="false"
android:inputType="none"
android:clickable="true"
android:focusable="false"