在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
在我的应用程序中,我有一个EditText,用户只有读访问权,没有写访问权。
在代码中,我设置android:enabled="false"。
虽然EditText的背景变成了黑色,但当我点击它时,键盘就会弹出来,我可以更改文本。
我应该设置什么来禁用EditText?
当前回答
对于禁用编辑EditText,我认为我们可以使用可聚焦或启用但是
使用android:启用=…或editText.setEnabled(…) 它还将EditText中的文本颜色更改为灰色。 当点击它没有效果 使用android: focusable =…或者editText.setFocusableInTouchMode(true) 它不会改变EditText的文本颜色 当点击它时,它会突出显示EditText的底线大约几毫秒
输出
其他回答
在我的情况下,我需要我的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);
}
}
由于android:editable="false"已被撤销。你可以在EditText上使用InputType TYPE_NULL
像这样使用:
editText.setInputType(InputType.TYPE_NULL);
我相信正确的方法是设置android:editable="false"。
如果你想知道为什么我的链接指向TextView的属性,你的答案是,因为EditText从TextView继承:
EditText是一个薄薄的贴面 配置自身为的TextView 可编辑的。
更新: 正如下面的评论中提到的,editable已弃用(从API级别3开始)。您应该使用inputType(值为none)。
你可以使用android:focusable="false",但也需要禁用光标否则 复制/粘贴功能仍然可以工作。
因此,使用
android:focusable="false"
android:cursorVisible="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); 在您的活动上,否则键盘将在第一时间弹出。