最近开发需求:
实现类似qq评论弹出框来实现评论功能.
使用popupWindow实现
这个是我的第一反应,使用popupWindow
来实现,于是说做就做。但是写着写着就出现了问题,我怎么去监听键盘?于是去向大神明明请教,明明给了我他之前写过的关于监听键盘的demo供我参考,于是就有了这个关于键盘监听的总结
1.1监听键盘(虽然最终没有使用,但是也记录下来作为积累)
对键盘的监听实现是使用ViewTreeObserver
的OnGlobalLayoutListener
监听方法来实现的具体流程是:
在OnGlobalLayoutListener
方法中获取程序显示界面,记录程序显示界面与改变之前的高度差(键盘高度)。实现代码如下:
public class TestLayout extends RelativeLayout {
private Context mContext;
private int mOldh = -1;
private int mNowh = -1;
protected int mScreenHeight = 0;//程序显示区域底部
protected boolean mIsSoftKeyboardPop = false;
public TestLayout(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//获取程序的显示区域
((Activity) mContext).getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
if (mScreenHeight == 0) {
mScreenHeight = r.bottom;
}
mNowh = mScreenHeight - r.bottom;
if (mOldh != -1 && mNowh != mOldh) {