【问题标题】:ResideMenu Android layout height wrongResideMenu Android布局高度错误
【发布时间】:2017-07-02 17:41:18
【问题描述】:

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

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

根据我的阅读,它可能与ResideMenu.java 中的protected boolean fitSystemWindows(Rect insets) 方法有关,但对我来说这似乎微不足道。

有什么想法吗?

【问题讨论】:

    标签: java android residemenu


    【解决方案1】:

    当我使用这个库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;
    }
    

    【讨论】:

    • 很多人提到过,但它不起作用 - 使用 Nexus 5x API v24 使用模拟器测试
    • 更不用说我认为代码是错误的 - 不应该是 hasBackKey || hasHomeKey(不是 NOT)
    猜你喜欢
    • 2021-05-03
    • 2011-09-06
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多