1

在潜伏了很多各种回应之后(感谢这个很棒的网站),我问了我的第一个问题。如果我做错了什么,请原谅我!

我想知道是否有办法在 Android 平板电脑上找到系统栏的宽度。不是带有虚拟按钮(返回、主页、菜单...)的部分,可点击部分会弹出所有通知消息。

并且如果有一种简单的方法可以知道系统栏/状态栏是在顶部还是底部。从对此问题的其他回应来看,getDecorView 似乎在所有情况下都不可靠。

谢谢!

4

1 回答 1

0

很少有相关问题可以帮助您在 android 平板电脑上的状态栏高度和 系统栏大小

在许多情况下,您不需要知道系统栏的位置,也不需要正确绘制自定义组件(即不被系统栏覆盖),您需要的只是覆盖fitSystemWindows如下所示:

(注意注释:当 insets.top > 0 时,您可以期望系统栏位于顶部,并且在 insets.bottom > 0 时类似

@Override
protected boolean fitSystemWindows(Rect insets) {

    ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) this
            .getLayoutParams();

    int top = params.topMargin + insets.top;
    int bottom = params.bottomMargin + insets.bottom;
    int left = params.leftMargin + insets.left;
    int right = params.rightMargin + insets.right;  
    /* Usually when insets.top > 0 means the systembar on the top and simiarly if insets.bottom > 0*/
    params.setMargins(left, top, right, bottom);
    return true;
}
于 2013-01-01T04:47:31.460 回答