在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。

在代码中,我设置android:enabled="false"。

虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。

我应该设置什么来禁用EditText?


当前回答

使用TextView代替。

其他回答

这对我来说很管用:

Android:focusable=“false”

试试这个,对我来说很管用:

public class CustomEdittext extends EditText {

Boolean mIsTextEditor=true;
public CustomEdittext(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
public boolean onCheckIsTextEditor() {
    // TODO Auto-generated method stub
    return mIsTextEditor;
}


@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    mIsTextEditor=false;
    Boolean mOnTouchEvent=super.onTouchEvent(event);
    mIsTextEditor=true;     
    return mOnTouchEvent;
} }

注意:你需要添加this.getWindow().setSoftInputMode(windowmanager . layoutparam . soft_input_state_always_hidden); 在您的活动上,否则键盘将在第一时间弹出。

从@渐近线对已接受答案的评论中,使用:

myEditText.setEnabled(false);
myEditText.setInputType(InputType.TYPE_NULL);

...鲍勃是你的叔叔。

今天我仍然使用editable="false",但也使用focusable="false"。

我认为我们需要使EditText不可编辑的情况,是因为我们想保持它的EditText样式(有下划线,有提示等),但它接受其他输入而不是文本。例如一个下拉列表。

在这种用例中,我们需要EditText可点击(因此enabled="false"不合适)。设置focusable="false"完成这个技巧,但是,我仍然可以长时间按住EditText并从剪贴板粘贴我自己的文本到它。这取决于你的代码和处理方式,甚至可能导致应用程序崩溃。

所以我也使用了editable="false"现在一切都很好,除了警告。

这将使您的编辑文本被禁用。

editText.setEnabled(false);

通过使用这个

editText.setInputType(InputType.TYPE_NULL);

将使您的Edittext不显示您的软键盘,但如果它连接到物理键盘,它将允许您输入。