本代码是通过软键盘的关闭方式,监听到软键盘的关闭,并在软键盘关闭的同时进行其他操作
public class MainActivity extends AppCompatActivity implements TextView.OnEditorActionListener{ EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText= (EditText) findViewById(R.id.editText); editText.setOnEditorActionListener(this); } /** * 判断软键盘是否弹出 */ public boolean isSHowKeyboard() { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); boolean isOpen=imm.isActive(); if (isOpen){ imm.hideSoftInputFromWindow(editText.getWindowToken(), 0) ; } return isOpen; } /** * 监听屏幕触摸,方法 * 注意: * return onTouchEvent的返回值如果为true 表示你已经处理了此时间 他的父组件将不会继续处理 * 如果为false 则他的父组件将继续处理此事件 * **/ @Override public boolean onTouchEvent(MotionEvent event) { return isSHowKeyboard(); } /** * 监听Back键按下事件,方法1: * 注意: * super.onBackPressed()会自动调用finish()方法,关闭 * 当前Activity. * 若要屏蔽Back键盘,注释该行代码即可 */ @Override public void onBackPressed() { if (isSHowKeyboard()){ } else super.onBackPressed(); } /** * 监听软键盘Done键按下事件,方法1: * 注意: * 返回值如果为true 表示你已经处理了此时间 他的父组件将不会继续处理 * 如果为false 则他的父组件将继续处理此事件 * 当前Activity. */ @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { switch (actionId){ case EditorInfo.IME_ACTION_DONE: return isSHowKeyboard(); } return false; } }