我正在使用AndroidResideMenu(https://github.com/SpecialCyCi/AndroidResideMenu),我发现了与视图大小相关的问题。
该库通过膨胀FrameLayout,从DecorView中删除当前视图并将其添加到新的FrameLayout(其中还包含用于添加菜单项的滚动视图和阴影视图)来工作。
旧视图保留其大小和位置,但新的FrameLayout似乎处于全屏模式,并且在菜单打开时隐藏在状态栏下,如我在此处所述(https://github.com/SpecialCyCi/AndroidResideMenu/issues/33)。
在api14 +设备中,可以通过在ResideMenu中添加对setFitsSystemWindow(true)的调用来解决问题,但我不知道在旧设备中该怎么做。
想法?
谢谢!
答案 0 :(得分:2)
好吧,我找到了解决方案。
只需实现方法fitSystemWindows(Rect insets)
,制作此方法文档中的内容(我直到现在才误解):
此方法的默认实现只是将内容insets应用于视图的填充,消耗该内容(将insets修改为0),并返回true。默认情况下,此行为是关闭的,但可以通过setFitsSystemWindows(boolean)启用。
所以,在ResideMenu
班:
@Override
protected boolean fitSystemWindows(Rect insets) {
setPadding(paddingLeft + insets.left, paddingTop + insets.top, ...);
insets.left = insets.top = insets.right = insets.bottom = 0;
return true;
}
希望这有帮助!