方法一:
public static void ctrlInputSoft(EditText view, boolean show) {
if (null == view || null == mContext) {
return;
}
InputMethodManager mImm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (show) {
if (!mImm.isActive()) {
mImm.showSoftInput(view, 0);
}
} else {
if (mImm.isActive()) {
mImm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
方法二:
public static void hideInputSoft(Activity activity){
if (null == activity) {
return;
}
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN
| WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
判断软键盘显示和隐藏
private int usableHeightPrevious;
private void softKeyboardListener() {
mTreeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int usableHeightNow;
Rect visible_Frame = new Rect();
mTreeLayout.getWindowVisibleDisplayFrame(visible_Frame);
usableHeightNow = visible_Frame.bottom - visible_Frame.top;
if (usableHeightNow != usableHeightPrevious) {
int usableHeightSansKeyboard = mTreeLayout.getRootView().getHeight();
int heightDifference = usableHeightSansKeyboard - usableHeightNow;
if (heightDifference > (usableHeightSansKeyboard / 4)) {
// keyboard probably just became visible
} else {
// keyboard probably just became hidden
}
usableHeightPrevious = usableHeightNow;
}
}
}