谁能告诉我如何使一个EditText不可编辑通过XML?我试着设置android:editable为false,但是

已弃用;而且 但是没有成功。


当前回答

你可以通过以下方法在edittext和editable之间切换:

public void toggleEditableOfEditText(EditText editText){
        if (editText.getKeyListener() != null) {
            editText.setTag(editText.getKeyListener());
            editText.setKeyListener(null);
        } else {
            editText.setKeyListener((KeyListener) editText.getTag());
        }
    }

然后使用这个方法使edittext可编辑或不可编辑:

toggleEditableOfEditText(editText);

其他回答

正如你提到的,android:editable已被弃用。android:inputType="none"应该被用来代替,但它不工作,由于一个bug (https://code.google.com/p/android/issues/detail?id=2854)

但是你可以通过使用focusable来达到同样的效果。

通过XML:

<EditText ...
        android:focusable="false" 
</EditText>

从代码:

((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);
<EditText
    android:id="@+id/txtDate"
    android:layout_width="140dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="2dp"
    android:clickable="false"
    android:cursorVisible="false"
    android:gravity="center" />

并使用以下:

txtDate.setKeyListener(null);

Try

.setInputType(InputType.TYPE_NULL);

只需使用android:enabled="false"即可。这也会给EditText一个外观,使它看起来不可编辑。

试试这个:

android:inputType="none"