airpanel 如何解决空气面板在刘海屏手机上不能弹出的问题

来源:11-8 聊天界面底部面板显示切换功能实现-1

米罗攻城狮

2019-01-13

在老师的Github里面也有一个issue类似
https://github.com/qiujuer/AirPanel/issues/2
的确是
在Helper类中

private boolean isOpenSoftKeyboard() {
return mLastFrame.bottom != 0 && mLastFrame.bottom != mDisplayHeight;
}```

此方法失效, mLastFrame.bottom != mDisplayHeight; 总是为true。
所以每次点击,都检查到键盘是打开的状态,那么结果就一直是隐藏软键盘吧。
写回答

4回答

Qiujuer

2019-01-13

这个,我需要看看 因为之前一直也没有刘海屏测试。我这边适配一下,多谢反馈。

0
1
米罗攻城狮
自己debug以下,发现下面这个条件刚好成立 mLastFrame.bottom-mLastFrame.top == mDisplayDefaultHeight 这样一改我的手机就可以弹出空气面板,但要监听以下recycleview滑动时关闭就有效果了。
2019-01-13
共1条回复

米罗攻城狮

提问者

2019-01-13

//img.mukewang.com/szimg/5c3b41eb00018b0d02530585.jpg

就这样效果了

0
0

米罗攻城狮

提问者

2019-01-13

@Override
public void setup(Activity activity) {
    mRootView = activity.getWindow().getDecorView();
    /*
    mRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            Util.log("onGlobalLayout");
        }
    });
    */
    // Get DisplayHeight
    DisplayMetrics metrics = new DisplayMetrics();
    //这个方法获取可能不是真实的屏幕高度
    activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    mDisplayDefaultHeight = metrics.heightPixels;
    //获取当前屏幕真实高度
    activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
    mDisplayHeight = metrics.heightPixels;
    }

@Override
public void adjustPanelHeight(int height) {
    // None do
}

private boolean isOpenSoftKeyboard() {
    return mLastFrame.bottom != 0 &&
     !(mLastFrame.bottom == mDisplayHeight ||
      mLastFrame.bottom-mLastFrame.top == mDisplayDefaultHeight);
}

发现下面刚好成立

mLastFrame.bottom-mLastFrame.top == mDisplayDefaultHeight

这样一改我的手机就可以弹出空气面板,但要监听以下recycleview滑动时关闭就可以啦。

0
1
Qiujuer
可以的,很稳
2019-01-13
共1条回复

Qiujuer

2019-01-13

这个,我需要看看 因为之前一直也没有刘海屏测试。我这边适配一下,多谢反馈。

0
0

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1749 学习 · 872 问题

查看课程