弹出输入法布局向上移动(使用OnLayoutChangeListener实现)

先说需求,仿IOS,在弹出输入法时,布局会向上推一下,或者说移动一下。Android没有现成的方法可以监听软键盘的弹出和收起,不过有一个OnLayoutChangeListener接口,这个接口可检测到布局发生的变化,通过新旧布局的坐标判断是收起或是弹出,并作相应的处理即可


实现这个接口 implements View.OnLayoutChangeListener


rlRoot是根布局,利用nineoleandroid包中的ViewHelper做的属性动画,让布局平移一下就可以了

rlBottomText是一个底部的提示控件,上推的时候隐藏,收起显示


@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
    if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) {
        //Toast.makeText(this, "监听到软键盘弹起...", Toast.LENGTH_SHORT).show();
        ViewHelper.setTranslationY(rlRoot, -30);
        rlBottomText.setVisibility(View.GONE);
    } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) {
        //Toast.makeText(this, "监听到软件盘关闭...", Toast.LENGTH_SHORT).show();
        ViewHelper.setTranslationY(rlRoot, 0);
        rlBottomText.setVisibility(View.VISIBLE);
    }
}


你可能感兴趣的:(Android开发)