2012-02-27 52 views
29

我试图把一个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" 

难道我做错了什么?

感谢您柠多

+0

实际上你想要什么? – 2012-02-27 18:30:52

+0

知道为什么不能只用android:editable =“false”。谢谢。 – Jjreina 2012-02-27 18:32:20

+0

@ Zortkun:这正是OP所要求的。 – Squonk 2012-02-27 18:44:05

回答

88

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代码中的bug;所以请检查this

+0

感谢与替代工作齿,但android:editable =“false”否 – Jjreina 2012-02-27 18:43:22

+2

使用textview在这种情况下更好 – 2013-02-27 06:26:11

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

      /> 

添加此

机器人:编辑= “假”

机器人:可调焦= “假”

机器人:可点击= “假”

其工作对我来说

+0

由于可编辑已弃用, 'android:inputType =“none”'(和其他的一样)。 – BlueBoy 2017-09-05 02:01:11

+0

不是因为它适合你,它也适用于我们。您是在今年5月19日发布的,所以您必须注意您提供了弃用的答案?来吧... – 2017-11-01 01:41:57

3

如果你想使一个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);