使用这个简单的代码:
textView.setKeyListener(null);
有用。
编辑:稍后添加KeyListener ,请执行以下操作
1:将按键监听器设置为textView标签
textView.setTag(textView.getKeyListener()); textView.setKeyListener(null);
2:从标记中获取关键字侦听器并将其设置回textView
textView.setKeyListener((KeyListener) textView.getTag());
将此添加到您的EditText xml文件中:
它会做android:editable="false" 。 为我工作,希望它也能为你工作。
让你的Edittext是
EditText editText;
editText.setKeyListener(null);
将工作,但它只是不听密钥。
用户可以在edittext上看到一个光标。
你可以试试editText.setEnabled(false);
这意味着用户看不到光标。 简单地说它将成为TextView 。
禁用XML(一行):
android:focusable="false"
从Java重新启用,如果需要(也是一行):
editText.setFocusableInTouchMode(true);
正如在其他答案中提到的,你可以做一个setEnabled(false)但是因为你问如何通过XML来设置它,这里是如何做到这一点。
将以下属性添加到您的EditText :
android:enabled="false"
他们做了“可编辑”的弃用,但没有在inputType中提供相应的工作。
顺便说一句,inputType =“none”有什么作用? 据我所知,是否使用它并没有什么区别。
例如,默认的editText被认为是单行。 但是你必须select一个inputType作为单行。 如果您select“无”,它仍然是多行。
正如你所提到的android:editable已被弃用。 应该使用android:inputType =“none”来代替,但是由于bug( )
但是你可以通过使用focusable来达到同样的效果。
通过XML:
从代码:
((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);
如果你想点击它,但不想编辑它,请尝试:
android:focusable="false"
如果你想在java代码中使用这一行来禁用它:
editText.setEnabled(false);
而这样做是为了:
editText.setEnabled(true);
我试图做到:
textView.setInputType( InputType.TYPE_NULL );
这应该工作,但对我来说没有。
我完成了这个代码:
textView.setKeyListener(new NumberKeyListener() { public int getInputType() { return InputType.TYPE_NULL; } protected char[] getAcceptedChars() { return new char[] {}; } });
这完美的作品。
并使用以下内容:
txtDate.setKeyListener(null);
只需使用android:enabled="false" 。 这也会给EditText外观,这将使它看起来不可编辑。
你可以使用android:editable="false"但是我真的build议你使用setEnabled(false)因为它提供了一个可视的线索给用户,该控件不能被编辑。 所有禁用的小部件都使用相同的视觉提示,一致性很好。
当我想要一个活动不专注于EditText,也不显示键盘单击时,这是我的工作。
将属性添加到主布局
android:descendantFocusability="beforeDescendants" android:focusableInTouchMode="true"
然后EditText字段
android:focusable="false" android:focusableInTouchMode="false"
这里是一个例子:
我已经尝试了以下内容:
codeEditText.setInputType(InputType.TYPE_NULL); this.codeEditText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { pickCode(); } } }); this.codeEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pickCode(); } });
但问题是,如果编辑文本是表单中的第一个,那么它将获得焦点,而启动新活动的pickCode()代码将立即被调用。 所以我修改了代码如下,它似乎工作得很好(除了我不能把重点放在文本编辑,但我不需要):
itemCodeEditText.setFocusable(false); this.itemCodeEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pickItem(); } });
最好的祝福,
评论欢迎,
约翰·戈奇
除了@mahe madi你也可以试试这个
editText.setEnabled(false); editor.setTextColor(Color.BLACK);
此方法将隐藏光标,失去焦点,更重要的是将文本颜色设置为像TextView一样的黑色。
而要恢复到editText,只需执行此操作即可获得EditText的所有属性。
editText.setEnabled(true);
希望能帮助到你 :)
如果我想编辑,我使用EditText.setFocusable(false)并再次设置为true。
android:editable被弃用,所以使用inputType来代替。
尝试这个 :
android:inputType="none"
这种方式做了我的工作,我可以select和复制到剪贴板,但我不能修改或粘贴。
android:enable="true" android:textIsSelectable="true" android:inputType="none"
这个组合为我工作:
android:longClickable="false" android:cursorVisible="false" android:focusableInTouchMode="false"
我遇到了同样的问题,但经过观察,我发现android:editable="false"只有在inputtypes( android:inputType="ANY_VALUE" ) 没有在Edittext中给出。
从EditText中删除inputType并使用editable = false,其工作正常。
尝试
.setInputType(InputType.TYPE_NULL);
试试这个代码。 它在我的项目中工作,所以它会在你的项目中工作。
android:editable="false"