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!

Solutions Collecting From Web of "editText不失焦点"

这很简单。 您可以将以下内容放在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); } 

这样,每当有人点击任何地方,你有控制权,而且只有一个代码点。

创build一个onClick监听器,可能在您的XML布局中监听LinearLayout背景中的点击。 从这里开始,您可以在EditText上调用.clearFocus() ,使其成为您正在使用的活动的实例variables。

您可以通过调用方法将焦点设置到其他字段,从EditText中删除焦点。

假设我已经把点击完成button设置为返回button,然后调用返回button里面的方法完成button点击监听器。

而你的问题解决了。

 back.requestFocusFromTouch();