光标最后android,关闭软键盘后,Edittext光标仍然闪烁
首先创建自定义编辑文本。 下面是按下键盘后退以取消键盘时回调的示例
public class EdittextListner extends EditText { private KeyImeChange keyImeChangeListener; public EdittextListner(Context context, AttributeSet attrs) { super(context, attrs); } public void setKeyImeChangeListener(KeyImeChange listener) { keyImeChangeListener = listener; } public interface KeyImeChange { public boolean onKeyIme(int keyCode, KeyEvent event); } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyImeChangeListener != null) { return keyImeChangeListener.onKeyIme(keyCode, event); } return false; }
}
其次,在您的布局文件中将EditText更改为EdittextListner。
最后做以下事情
mLastNameEditText.setKeyImeChangeListener(new EdittextListner.KeyImeChange() { @Override public boolean onKeyIme(int keyCode, KeyEvent event) { mLastNameEditText.clearFocus(); return true; } });
这对我有用。 希望这可以帮助
正如您所说, EditText的闪烁光标与具有焦点的EditText相关,但显示或隐藏软键盘与View获得或失去焦点无关。 任何View ( EditText或其他)都可以独立于是否显示软键盘而聚焦,并且EditText没有任何内在因素可以使其表现得与众不同。
如果您希望隐藏软键盘时EditText失去焦点,则需要通过监听软键盘可见性的更改并更新EditText来自行实现此function。
知道键盘消失的唯一方法是覆盖OnglobalLayout并检查高度。 根据该事件,您可以在编辑文本上“setCursorVisible(false)”
有关更多信息,请查看此链接 。
RelativeLayout mainLayout = findViewById(R.layout.main_layout); // You must use the layout root InputMethodManager im = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE); /* Instantiate and pass a callback */ SoftKeyboard softKeyboard; softKeyboard = new SoftKeyboard(mainLayout, im); softKeyboard.setSoftKeyboardCallback(new SoftKeyboard.SoftKeyboardChanged() { @Override public void onSoftKeyboardHide() { // Code here EditText.clearFocus(); } @Override public void onSoftKeyboardShow() { // Code here } }); /* Open or close the soft keyboard easily */ softKeyboard.openSoftKeyboard(); softKeyboard.closeSoftKeyboard(); /* Prevent memory leaks: */ @Override public void onDestroy() { super.onDestroy(); softKeyboard.unRegisterSoftKeyboardCallback(); }
Edittext是一个接受用户输入的视图,因此它与keyborad打开或关闭无关,当用户点击edittext时,edittext将获得焦点,光标将开始闪烁以进行输入,
所以你可以做一件事,就像当你关闭键盘的同时你也可以为该edittext设置光标的可见性,这样它就会停止闪烁,
为此,隐藏键盘时需要在下面写一行。
editTextObject.setCursorVisible(false);
这将使光标停止闪烁。
尝试这个:
public class EditTextBackEvent extends EditText { private EditTextImeBackListener mOnImeBack; public EditTextBackEvent(Context context) { super(context); } public EditTextBackEvent(Context context, AttributeSet attrs) { super(context, attrs); } public EditTextBackEvent(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { if (mOnImeBack != null) mOnImeBack.onImeBack(this, this.getText().toString()); } return super.dispatchKeyEvent(event); } public void setOnEditTextImeBackListener(EditTextImeBackListener listener) { mOnImeBack = listener; } public interface EditTextImeBackListener { void onImeBack(EditTextBackEvent ctrl, String text); } }
在你的布局中:
在你的片段中:
edittext.setOnEditTextImeBackListener(new EditTextBackEvent.EditTextImeBackListener() { @Override public void onImeBack(EditTextBackEvent ctrl, String text) { edittext.clearfocus(); } });
尝试在布局中保留一个可以在editText上方聚焦的视图。
这应该工作,因为空白的可聚焦视图应该捕获焦点而不是您的edittext。
更多推荐
所有评论(0)