Android 平板电脑上的系统栏宽度

Android 平板电脑上的系统栏宽度,android,Android,在等待了很多回复之后,感谢这个很棒的网站,我问了我的第一个问题。如果我做错了什么,请原谅我 我想知道是否有办法在Android平板电脑上找到系统栏的宽度。不是带有返回、主页、菜单等虚拟按钮的部分,而是弹出所有通知消息的可单击部分 还有,是否有一种简单的方法可以知道系统栏/状态栏是在顶部还是底部。从其他对此问题的回应来看,getDecorView并非在所有情况下都可靠 谢谢 很少有相关问题可以帮助您和 在许多情况下,您不需要知道系统栏的位置,也不需要正确绘制自定义组件,即系统栏不包含的组件。您只

在等待了很多回复之后,感谢这个很棒的网站,我问了我的第一个问题。如果我做错了什么,请原谅我

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

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


谢谢

很少有相关问题可以帮助您和

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

请注意注释:当insets.top>0时,可以预期系统栏位于顶部,类似地,当insets.bottom>0时


谢谢,你的回答似乎很好地回答了我问题的第二部分。我还没有测试,但因为这是3个月内唯一的反应,而且似乎非常相关,所以我现在验证了它。
@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;
}