0

我正在使用 Android ResideMenu库,除了错误计算我的主要“内容活动”大小的问题外,它通常都很好。

我已经用几种设备进行了测试,但每个设备似乎都有点偏差,当我尝试从活动底部显示项目时(例如小吃店或自定义弹出窗口)会导致问题(见图) .

从我读过的内容来看,它可能与 中的protected boolean fitSystemWindows(Rect insets)方法有关ResideMenu.java,但对于我来说,这似乎微不足道。

有任何想法吗?

在此处输入图像描述

4

1 回答 1

0

当我使用这个库时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;
}
于 2017-07-02T18:16:44.237 回答