我正在使用 Android ResideMenu库,除了错误计算我的主要“内容活动”大小的问题外,它通常都很好。
我已经用几种设备进行了测试,但每个设备似乎都有点偏差,当我尝试从活动底部显示项目时(例如小吃店或自定义弹出窗口)会导致问题(见图) .
从我读过的内容来看,它可能与 中的protected boolean fitSystemWindows(Rect insets)
方法有关ResideMenu.java
,但对于我来说,这似乎微不足道。
有任何想法吗?
我正在使用 Android ResideMenu库,除了错误计算我的主要“内容活动”大小的问题外,它通常都很好。
我已经用几种设备进行了测试,但每个设备似乎都有点偏差,当我尝试从活动底部显示项目时(例如小吃店或自定义弹出窗口)会导致问题(见图) .
从我读过的内容来看,它可能与 中的protected boolean fitSystemWindows(Rect insets)
方法有关ResideMenu.java
,但对于我来说,这似乎微不足道。
有任何想法吗?
当我使用这个库时ResideMenu
,我遇到了同样的问题。在
ResideMenu.java文件中,我对两个函数进行了更改。
功能:
@Override
protected boolean fitSystemWindows(Rect insets) {
int bottomPadding = viewActivity.getPaddingBottom() + insets.bottom;
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (!hasBackKey || !hasHomeKey) {//there's a navigation bar
bottomPadding += getNavigationBarHeight();
}
this.setPadding(viewActivity.getPaddingLeft() + insets.left,
viewActivity.getPaddingTop() + insets.top,
viewActivity.getPaddingRight() + insets.right,
bottomPadding);
insets.left = insets.top = insets.right = insets.bottom = 0;
return true;
}
private int getNavigationBarHeight() {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
return resources.getDimensionPixelSize(resourceId);
}
return 0;
}