标识已应用Android 9.0的显示剪切类型

问题描述 投票:3回答:1

我正在尝试识别在OS> = 9.0的android中以编程方式选择的显示切口类型。

我尝试过这种方式

DisplayCutout displayCutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();

但是显示切口始终返回null。

我也尝试过另一种方式

 int mode = ((Activity) context).getWindow().getAttributes().layoutInDisplayCutoutMode;

但是这给了我应用程序支持的价值。我设置为永不采用我的风格。

但是我想知道用户何时从设置的开发人员选项中选择不同的切口类型。

请让我知道是否可以实现!

android android-9.0-pie
1个回答
1
投票

[经过一些测试,添加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;
}
© www.soinside.com 2019 - 2024. All rights reserved.