在android中禁用EditText

在我的应用程序中,我有一个EditText。 我想用户只是读访问不写访问。 在代码中,我设置了android:enabled="false" 。 尽pipeEditText的背景变成了黑暗,但当我点击它时,键盘popup,我可以改变文字。

我该怎么办? 谢谢

我相信正确的是设置android:editable="false"

如果你想知道为什么我的链接指向TextView的属性,你的答案是因为EditTextinheritance自TextView

EditText是TextView的一个薄薄的单板,它可以自己configuration为可编辑的。

更新:
正如在下面的评论中提到的那样, editable已被弃用( 从API级别3开始 )。 你应该改为使用inputType (值为none )。

使用EditText.setFocusable(false)禁用编辑
EditText.setFocusableInTouchMode(true)启用编辑;

使用这个来禁用用户input

 android:focusable="false" 

android:editable =“false”这个方法是弃用的。

你可以尝试下面的方法:

  private void disableEditText(EditText editText) { editText.setFocusable(false); editText.setEnabled(false); editText.setCursorVisible(false); editText.setKeyListener(null); editText.setBackgroundColor(Color.TRANSPARENT); } 

启用EditText:

启用EditText

禁用EditText:

禁用EditText

它适合我,希望它可以帮助你。

正如android:editable="false"被depricated.You可以在EditText上使用InputType TYPE_NULL

像这样使用:

 editText.setInputType(InputType.TYPE_NULL); 

只是:

 editText.setEnabled(false); 

改用TextView

如果你使用android:editable="false" ,eclipse会提醒你这个消息“android:editable is deprecated:Use inputType instead”。

所以,我使用android:focusable="false"代替它,它对我来说很好。

在下面的属性中设置:

 editText.setFocusable(false); editText.setEnabled(false); 

它会按照你的要求顺利运行。

正如android:editable="false"已弃用

使用android:enabled="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.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 在您的活动或否则键盘将在第一时间popup。

在我的情况下,我需要我的EditText滚动文本,如果没有。 当其禁用时,行数超过maxLines 。 这个实现对我来说是完美的。

 private void setIsChatEditTextEditable(boolean value) { if(value) { mEdittext.setCursorVisible(true); mEdittext.setSelection(chat_edittext.length()); // use new EditText(getApplicationContext()).getKeyListener()) if required below mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener()); } else { mEdittext.setCursorVisible(false); mEdittext.setKeyListener(null); } } 

从@ Asymptote对接受的答案的评论,请使用:

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

鲍勃是你的叔叔

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

我认为我们需要编辑EditText的情况是不可编辑的,因为我们希望保留EditText样式(使用下划线和提示等),但它接受其他input而不是文本。 例如下拉列表。

在这种用例中,我们需要让EditText可点击(因此enabled="false"是不合适的)。 设置focusable="false"做这个技巧,但是, 我仍然可以长时间保持EditText,并从剪贴板粘贴我自己的文本 。 根据你的代码和处理,甚至可能会崩溃你的应用程序。

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

这适用于我:

机器人:可聚焦=“假”