我已经使用常见的建议方法(共享以供参考)调整了我的活动以尊重插图(系统栏):
ViewCompat.setOnApplyWindowInsetsListener(root, new OnApplyWindowInsetsListener() {
@androidx.annotation.NonNull
@Override
public WindowInsetsCompat onApplyWindowInsets(@androidx.annotation.NonNull View view, @androidx.annotation.NonNull WindowInsetsCompat insets) {
// Apply the insets (e.g., padding, margin)
paddingsSum = insets.getInsets(WindowInsetsCompat.Type.systemBars()).top + insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom;
view.setPadding(
view.getPaddingLeft(),
insets.getInsets(WindowInsetsCompat.Type.systemBars()).top,
view.getPaddingRight(),
insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom
);
// Return the insets to indicate they're consumed
return insets;
}
});
它肯定有效,正如您所看到的,在第一个(左)屏幕截图中,系统栏完全可见:
现在请注意第二个(右侧)屏幕截图,其中我只是展示了来自 Google AdMob 的插页式广告。由于某种原因,它不尊重父活动的插入。您知道如何强制 Google AdMob 插页式广告尊重插图(例如状态栏)吗?
在屏幕截图中看不到,但在真实设备上,有一个凹口,遮住了部分广告。
有什么解决办法吗?我有同样的问题,我已经尝试了一切,我补充道 item name="android:windowLayoutInDisplayCutoutMode">永远不会到 mainactivity 主题,它也不起作用