在android中侦听键盘显示或隐藏事件

在android中侦听键盘显示或隐藏事件,android,listener,android-softkeyboard,Android,Listener,Android Softkeyboard,我试图监听键盘显示或隐藏时发生的事件。这在Android中可能吗?当我开始我的活动时,我不想弄清楚键盘是显示还是隐藏,我想听听事件 请尝试以下代码:- // from the link above @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks whether a hardware

我试图监听键盘显示或隐藏时发生的事件。这在Android中可能吗?当我开始我的活动时,我不想弄清楚键盘是显示还是隐藏,我想听听事件

请尝试以下代码:-

// from the link above
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);


    // Checks whether a hardware keyboard is available
    if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
        Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
    } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
        Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
    }
}

对于以下代码,您必须扩展LinearLayout

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
    final int actualHeight = getHeight();

    if (actualHeight > proposedheight){
        // Keyboard is shown
    } else {
        // Keyboard is hidden
    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
请参阅以下链接:-


第一种仅适用于硬键盘。第二个是不可能做到的,我怎样才能覆盖onMeasure(int,int)?@alexandernajafi首先很抱歉,现在有几种方法可以检测键盘,所以请使用上述方法或查看链接。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    final int proposedheight = MeasureSpec.getSize(heightMeasureSpec);
    final int actualHeight = getHeight();

    if (actualHeight > proposedheight){
        // Keyboard is shown
    } else {
        // Keyboard is hidden
    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}