本代码是通过软键盘的关闭方式,监听到软键盘的关闭,并在软键盘关闭的同时进行其他操作
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;
}
}