editText没有失去焦点

当我点击它时,editText没有失去焦点在我的应用程序中,它始终具有橙色边框和黑色线条光标.. 我根据这个围绕editText做了一个LinearLayout: 停止EditText在Activity启动时获得焦点 因此它不会专注于应用程序的启动.. 这是我的代码:
final EditText et = (EditText)findViewById(R.id.EditText01);

final InputMethodManager imm = (InputMethodManager) getSystemService(
   INPUT_METHOD_SERVICE);

et.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
      imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
   }
});

et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
   public void onFocusChange(View v, boolean hasfocus) {
      if(hasfocus) {
         imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
      } else {
         imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
      }
   }
});
但是,当我点击editText之外的任何地方时,似乎没有调用onFocusChange!     
已邀请:
这很简单。您可以将以下内容放在LinearLayout或其他任何其他内容中:
android:focusableInTouchMode="true"
    
覆盖
Activity.dispatchTouchEvent()
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        View view = getCurrentFocus();
        if (view != null && view instanceof EditText) {
            Rect r = new Rect();
            view.getGlobalVisibleRect(r);
            int rawX = (int)ev.getRawX();
            int rawY = (int)ev.getRawY();
            if (!r.contains(rawX, rawY)) {
                view.clearFocus();
            }
        }
    }
    return super.dispatchTouchEvent(ev);
}
这样,无论何时有人点击任何地方,您都可以控制,而且只有代码中的一个点。     
创建一个
onClick
监听器,可能在您的XML布局中监听后台LinearLayout中的点击。在您将其作为您正在进行的活动的实例变量后,您可以在此处拨打
.clearFocus()
。     
您可以通过调用方法将焦点设置为其他字段来从EditText中删除焦点。 假设我在点击完成按钮时将焦点设置为后退按钮,然后在完成按钮单击侦听器内的后退按钮上调用方法。 而且你的问题已经解决了。
back.requestFocusFromTouch();
    

要回复问题请先登录注册