Androidページで空白をクリックしてソフトキーボードを隠す
2370 ワード
私たちは開発の中で、時にはより良いユーザー体験のために、製品マネージャーは私たちにいくつかのソフトキーボードがポップアップする時、外部の空白をクリックしてソフトキーボードを自動的に隠すように要求して、最初にonTouchEvent()方法を考えて、ネット上でもこのような解決策を提供して、具体的に以下のように実現します:
しかし、私のプロジェクトでこの方法を具体的に使用したとき、効果はありませんでした.そこで、ネットで探してみると、次のような解決策が与えられていることに気づきました.私は使ってみて、私の問題を解決することができて、それを記録しました.参考にした資料の住所は次の通りです.
http://www.2cto.com/kf/201505/401382.html
具体的に実装されたコードは以下に貼られており、必要な友达を助けることができることを望んでいます.
InputMethodManager manager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
if(getCurrentFocus()!=null && getCurrentFocus().getWindowToken()!=null){
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
return super.onTouchEvent(event);
}
しかし、私のプロジェクトでこの方法を具体的に使用したとき、効果はありませんでした.そこで、ネットで探してみると、次のような解決策が与えられていることに気づきました.私は使ってみて、私の問題を解決することができて、それを記録しました.参考にした資料の住所は次の通りです.
http://www.2cto.com/kf/201505/401382.html
具体的に実装されたコードは以下に貼られており、必要な友达を助けることができることを望んでいます.
/**
* ,
*
* @param ev
* @return
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View view = getCurrentFocus();
if (isHideInput(view, ev)) {
HideSoftInput(view.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
//
private boolean isHideInput(View v, MotionEvent ev) {
if (v != null && (v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left
+ v.getWidth();
if (ev.getX() > left && ev.getX() < right && ev.getY() > top
&& ev.getY() < bottom) {
return false;
} else {
return true;
}
}
return false;
}
//
private void HideSoftInput(IBinder token) {
if (token != null) {
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}