我有一个EditText,用户不应该能够输入。因此我尝试禁用它,方法是
edittext.setEnabled(false);
edittext.setClickable(false);
然而,当我从其他EditText中按下软键盘上的“下一个”按钮时,它仍然会将我定向到不应该可编辑的那个EditText,并且我能够在其中插入值。如何避免这种情况?
我有一个EditText,用户不应该能够输入。因此我尝试禁用它,方法是
edittext.setEnabled(false);
edittext.setClickable(false);
然而,当我从其他EditText中按下软键盘上的“下一个”按钮时,它仍然会将我定向到不应该可编辑的那个EditText,并且我能够在其中插入值。如何避免这种情况?
这很好用; 只需将您的EditText的focusable属性设置为“false”,就完成了。
<EditText
android:id="@+id/EditTextInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:gravity="right"
android:cursorVisible="true">
</EditText>
isFocusable = false
仍然允许长按并复制粘贴输入框中本应禁用的任何内容。你的答案实际上做到了预期的效果。 - NeverwinterMoon不要搞乱自己。只需简单操作,使用下面的方法
首先,保存EditText的键监听器:
KeyListener mKeyListener = yourTextView.getKeyListener();
yourTextView.setKeyListener(null);
如果您想重新启用编辑,只需将保存的监听器重新分配即可:
yourTextView.setKeyListener(mKeyListener);
yourEditText.setKeyListener(null);
无需移除焦点并将可点击设置为false。
只需删除键盘监听器即可完成。
也已在Android 6.0上测试通过
edittext.setEnabled(false);
edittext.setGravity(Gravity.CENTER);
edittext.setClickable(false);
edittext.setFocusable(false);
edittext.setFilters(new InputFilter[] { new textChange() });
edittext.setInputType(0);
class textChange implements InputFilter {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
return dest.subSequence(dstart, dend);
}
}
android:focusable="false"
android:longClickable="false"
edittext.setFocusable(false);
edittest.setFocusableInTouchMode(false);
这将使EditText不可编辑。setFocusable(false)
会自动禁用 setFocusableInTouchMode
。 - Nirmal这可能会对某些人有所帮助。 我找到了一个实现:
@Override
public boolean onTouch(View v, MotionEvent event) {
//for edit text
return locked;
}
locked
表示锁定状态。
当然,我必须使用 editText.setOnTouchListener(<listener>);
android:focusable="false"