Android 平板电脑上的系统栏宽度
在等待了很多回复之后,感谢这个很棒的网站,我问了我的第一个问题。如果我做错了什么,请原谅我 我想知道是否有办法在Android平板电脑上找到系统栏的宽度。不是带有返回、主页、菜单等虚拟按钮的部分,而是弹出所有通知消息的可单击部分 还有,是否有一种简单的方法可以知道系统栏/状态栏是在顶部还是底部。从其他对此问题的回应来看,getDecorView并非在所有情况下都可靠Android 平板电脑上的系统栏宽度,android,Android,在等待了很多回复之后,感谢这个很棒的网站,我问了我的第一个问题。如果我做错了什么,请原谅我 我想知道是否有办法在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;
}