带手势导航的小吃店位置错误

问题描述

我正在开发一个显示Snackbar的应用。

Snackbar在我的MainActivity中使用以下代码可以正常工作:

Snackbar snackbar = Snackbar.make(myLayout,"My snackbar",Snackbar.LENGTH_LONG)
                .setBackgroundTint(myColor)
                .setTextColor(ContextCompat.getColor(this,R.color.black));
[...]
snackbar.show();

以下是显示内容

enter image description here

它适用于每个方向上的每个屏幕以及不同的Android版本。仅针对一种配置,它会产生以下错误:设备使用手势导航时。 (很多新手机)

在这种情况下,Snackbar会在Snackbar和屏幕底部之间留有间隙,如下所示:

enter image description here

我在网上没有找到任何解释,但我自己发现了。

通过打开开发人员选项中的Show layout bounds选项,我们可以观察到“经典”导航栏看起来仍然像在这里,就像可见性设置为View.INVISIBLE一样,我们可以期望{{1 }}的屏幕。

因此,当我尝试显示View.GONE时,它就显示在此“不可见导航栏”的顶部。

这是一些带有布局边界且带有或不带有手势导航的屏幕(在主菜单中):

enter image description here

enter image description here

这是在不同的手机和品牌(Pixel,三星...)以及仿真器上进行的测试。

是否存在正常行为?如何消除这种差距?

解决方法

对我来说,将admin.auth().deleteUsers([uid1,uid2,uid3]) .then(deleteUsersResult => { console.log('Successfully deleted ' + deleteUsersResult.successCount + ' users'); console.log('Failed to delete ' + deleteUsersResult.failureCount + ' users'); deleteUsersResult.errors.forEach(err => { console.log(err.error.toJSON()); }); }) .catch(error => { console.log('Error deleting users:',error); }); 设置为GestureInsetBottomIgnored可以解决此问题:

true

来自Android Docs

根据Android Q及更高版本上的系统手势区域设置此底栏是否应调整其位置。 注意:只有通过滑动将其禁用(因为这会导致手势冲突),启用手势导航并且此fingerInsetBottomIgnored标志为false时,底部栏才会调整其位置。