谁能告诉我如何使一个EditText不可编辑通过XML?我试着设置android:editable为false,但是
已弃用;而且 但是没有成功。
谁能告诉我如何使一个EditText不可编辑通过XML?我试着设置android:editable为false,但是
已弃用;而且 但是没有成功。
当前回答
让你的编辑文本
EditText editText;
editText.setKeyListener(空);
会起作用,但就是听不到按键。
用户可以在编辑文本上看到光标。
你可以尝试editText.setEnabled(false);
这意味着用户看不到游标。简单地说,它将成为TextView。
其他回答
试试这段代码。它在我的项目中工作,所以它将在你的项目中工作。
android:editable="false"
使用这段简单的代码:
textView.setKeyListener(null);
它的工作原理。
编辑:如果稍后要添加KeyListener,请执行以下操作
1:设置关键监听器为textView的标签
textView.setTag(textView.getKeyListener());
textView.setKeyListener(null);
2:从标签中获取关键监听器,并将其设置回textView
textView.setKeyListener((KeyListener) textView.getTag());
你可以使用android:editable="false",但我真的会建议你 使用setEnabled(false),因为它为用户提供了一个视觉线索 控件不能编辑。所有人都使用相同的视觉线索 禁用小部件和一致性很好。
他们弃用了“可编辑的”,但没有在inputType中提供相应的工作。
顺便说一下,inputType="none"有什么影响吗?在我看来,用不用它没有任何区别。
例如,默认的editText是单行的。但是您必须选择一个inputType,使其为单行。如果你选择“none”,它仍然是多行。
我试过以下几种方法:
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();
}
});
最好的问候,
我们欢迎评论,
约翰Goche