gpt4 book ai didi

android - 点击外部edittext失去焦点

转载 作者:IT王子 更新时间:2023-10-29 00:04:04 30 4
gpt4 key购买 nike

我只想在“edittext”外部单击时自动失去焦点并隐藏键盘。目前,如果我点击“edittext”它会聚焦,但我需要点击后退按钮才能取消聚焦。

最佳答案

要解决这个问题,你要做的就是首先使用那个 Edittext 的 setOnFocusChangeListener

edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
Log.d("focus", "focus lost");
// Do whatever you want here
} else {
Log.d("focus", "focused");
}
}
});

然后您需要做的是在包含 Edittext 的 Activity 中覆盖 dispatchTouchEvent,请参见下面的代码

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if ( v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int)event.getRawX(), (int)event.getRawY())) {
Log.d("focus", "touchevent");
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
return super.dispatchTouchEvent(event);
}

现在会发生什么,当用户点击外部时,首先会调用这个 dispatchTouchEvent,然后从editext清除焦点,现在你的 OnFocusChangeListener 将被调用,焦点已经改变,现在你可以做任何你想做的事情想做,希望有效:)

关于android - 点击外部edittext失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677969/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com