注: mReplayRelativeLayout是EditText的父布局
mReplayRelativeLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootLayout.getWindowVisibleDisplayFrame(r);
if (visibleWindowDisplayHeight > r.bottom) {
//软键盘显
Log.e("TestCostomUIActivity", "输入框show");
} else {
//软键盘隐藏
Log.e("TestCostomUIActivity", "输入框hide");
}
}
});
private int visibleWindowDisplayHeight = 0;
/**
* 弹出输入框
* */
private void showSoftInput(){
//获取虚拟键盘隐藏情况下可视窗口的大小
Rect r = new Rect();
rootLayout.getWindowVisibleDisplayFrame(r);
visibleWindowDisplayHeight = r.bottom;
etTransfer.requestFocus();
InputMethodManager imm = (InputMethodManager) etTransfer.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null) {
imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
}
}
参考:https://www.cnblogs.com/niupi/p/6251663.html