參考
1蝙寨、Android打開關(guān)閉軟鍵盤
2禾怠、android 滑動(dòng)或者點(diǎn)擊其他地方隱藏鍵盤的方法
3糕珊、android中ScrollView的setOnClickListener無效
使用
1哄尔、SomeActivity extends BaseActivity
//父控件resid,如果有scrollview是子控件但是match_parent的話用scrollview的resid
hideParentSoftKeyborad(R.id.sv_batch_review);
2侍咱、BaseActivity
/**
* 點(diǎn)擊空白處或滑動(dòng)時(shí)候隱藏軟鍵盤
* parent里面下如果有scrollview占據(jù)整個(gè)畫面的話耐床,必須resLayout=scrollview_resid,不然監(jiān)聽不到
* */
protected void hideParentSoftKeyborad(int resLayout){
//以前的:點(diǎn)空白處隱藏軟鍵盤
// findViewById(resLayout).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// LogUtil.d("===hideParentSoftKeyborad = onClick");
// AppUtil.hideSoftKeyboard(instance);
// }
// });
findViewById(resLayout).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
AppUtil.hideSoftKeyboard(instance);
break;
case MotionEvent.ACTION_MOVE:
AppUtil.hideSoftKeyboard(instance);
break;
}
return false;
}
});
}
3楔脯、AppUtil
/**
* 關(guān)閉該控件的軟鍵盤
* */
public static void closeKeyBoard(Context ctx,EditText editText) {
try {
InputMethodManager imm = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
* 隱藏軟鍵盤
* */
public static void hideSoftKeyboard(Activity act){
InputMethodManager manager = (InputMethodManager) act.getSystemService(Activity.INPUT_METHOD_SERVICE);
View focus = act.getCurrentFocus();
manager.hideSoftInputFromWindow(
focus == null ? null : focus.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
public static void hideSoftKeyboard(IBinder token, Context context){
InputMethodManager inputMethodManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
4撩轰、ScrollView的坑!C镣ⅰ堪嫂!
1、一般來說直接傳parent_resid就可以了木柬。但是=源!眉枕!
2恶复、scrollview不能onclick監(jiān)聽,但是要監(jiān)聽他的點(diǎn)擊和滑動(dòng)就得用ontouch監(jiān)聽
3齐遵、如果parent下有個(gè)差不多占據(jù)整個(gè)屏幕的scrollview請(qǐng)傳scrollview_resid比較好寂玲,因?yàn)閜arent_resid被遮擋了,監(jiān)聽不到梗摇。拓哟。。