ResideMenu Android布局高度错误

Posted

技术标签:

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

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

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

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

有什么想法吗?

【问题讨论】:

【参考方案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)

以上是关于ResideMenu Android布局高度错误的主要内容,如果未能解决你的问题,请参考以下文章

Android源代码学习笔记:AndroidResideMenu-master

Android 表格布局中 控件高度不一致问题问题

android布局中高为0dp 权重为1是啥意思

ResideMenu 项禁用?

使用 ResideMenu lib 时删除菜单项

xamarin android 怎么设置布局的最大高度