キーボードをどこからでも隠すソリューションは次のとおりです。
最初に、選択したアクティビティで、状態のリスナーと、(開いている状態に基づいて) 終了を行うメソッドを作成します。
public class MainActivity extends SherlockFragmentActivity {
private boolean mKeyboardOpen = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// add "keyboard open listener"
final View v = findViewById(R.id.pager);
v.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int hRoot = v.getRootView().getHeight();
int hView = v.getHeight();
int heightDiff = hRoot - hView;
// if more than 150 pixels, its probably a keyboard...
mKeyboardOpen = heightDiff > 150;
Log.d(TAG, "hRoot=" + hRoot + ", hView=" + hView + ", mKeyboardOpen=" + mKeyboardOpen);
}
});
}
public void closeSoftKeyboard() {
if (mKeyboardOpen) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
}
EditText((MainActivity) getActivity()).closeSoftKeyboard();
のOnClickListener()
. _
ヒント: ViewPager ルート ビュー (R.id.pager) を使用していますが、おそらくビュー ルート ID に置き換える必要があります。