我尝试以这种方式使用BroadcastReceiver来实现它。 但它不起作用。显示/隐藏事件永远不会进入我的接收器。
filter = new IntentFilter();
filter.addAction(Intent.ACTION_INPUT_METHOD_CHANGED);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
registerReceiver(receiver, filter);
我希望有些好人可以帮助我。
全部
答案 0 :(得分:0)
希望它能为你提供帮助。
OnGlobalLayoutListener mOnGlobalLayoutListener;
private void performListenKeyboard() {
if (mOnGlobalLayoutListener == null) {
mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final int screenHeight = mRootView.getRootView().getHeight();
int keyboardHeight = screenHeight - mRootView.getHeight();
if (keyboardHeight < screenHeight / 3 || !isShowKeyboard) {
return;
}
// keyboard show,do something
// at last , remove listener
mRootView.getRootView().getViewTreeObserver().removeOnGlobalLayoutListener(mOnGlobalLayoutListener);
}
};
}
// register GlobalLayoutListener callback
mRootView.getRootView().getViewTreeObserver()
.addOnGlobalLayoutListener(mOnGlobalLayoutListener);
}