我正在尝试识别在OS> = 9.0的android中以编程方式选择的显示切口类型。
我尝试过这种方式
DisplayCutout displayCutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
但是显示切口始终返回null。
我也尝试过另一种方式
int mode = ((Activity) context).getWindow().getAttributes().layoutInDisplayCutoutMode;
但是这给了我应用程序支持的价值。我设置为永不采用我的风格。
但是我想知道用户何时从设置的开发人员选项中选择不同的切口类型。
请让我知道是否可以实现!
[经过一些测试,添加LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
后,只有OnApplyWindowInsetsListener
有效”>
我已经成功检索了DisplayCutout
并且是Rects
@Override
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
DisplayCutout cut = insets.getDisplayCutout();
if(cut != null) {
int space = insets.getDisplayCutout().getBoundingRects().get(0).height();
HCNXLog.e(TAG, "DisplayCutout.. " + space);
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
lp.topMargin = space;
toolbar.setLayoutParams(lp);
}
return insets;
}