popwindow 的showAsDropDown对于 华为、小米等全面屏适配问题,适配后不会出现底部白条及位置错误

好久没写博客了,记录下今天遇到的问题。showAsDropDown在7.0后需要适配。

造成此问题的原因是 华为等全面屏在

relayView.getResources().getDisplayMetrics()

获取高度的时候,把通知栏的高度也囊括进来了,找了一天,网上的代码比较过时了,使用后都没什么效果。

修改方案(获取activity的高度后减去控件高度即可):

if (Build.VERSION.SDK_INT < 24) {
    popupWindow.showAsDropDown(relayView);
} else {
    Rect rect = new Rect();
    relayView.getWindowVisibleDisplayFrame(rect);
    Activity activity = (Activity) relayView.getContext();
    Rect outRectReal = new Rect();
    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRectReal );
    int height = outRectReal .height() - rect.bottom;
    popupWindow.setHeight(height );
    popupWindow.showAsDropDown(relayView);
}

在使用showAsDropDown的时候 替换上边代码,即可修复。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值