弹出窗口的背景变暗或模糊 window

Dim or blur background of popup window

我可以得到弹出 window 但背景是透明的,我也可以阅读它后面 activity 的内容。我想调暗背景,以便弹出窗口和较旧的 activity 得到区分。

您可以通过两种方式完成
1. 通过将具有透明度的背景颜色添加到弹出布局的父级。 示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cc000000">

<YOUR_POPUP_VIEW
.... /> 
</RelativeLayout>
  1. WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.dimAmount = #WHAT_EVER_VALUE_YOU_WANT_TO_KEEP; //Generally in between 0.70f to 0.80f getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); getWindow().setAttributes(layoutParams);

从 API 31+ 开始,我们可以使用两个 window 属性 来实现。

<item name="android:windowBlurBehindEnabled">true</item>
<item name="android:windowBlurBehindRadius">Xdp</item>

如果您的小马驹是 运行 类似 Activity 的对话,那么我们有更多可能想要探索的标志:

<!-- Removes Window Title. windowActionBar=false is not needed. -->
<item name="windowNoTitle">true</item>

<!-- When enabling Blur, we also need to provide the blur radius. -->
<!-- Only available on Min Sdk 21. -->
<item name="android:windowBlurBehindEnabled">true</item>
<item name="android:windowBlurBehindRadius">12dp</item>

<!-- In case we want our Activity to behave like a Dialog. -->
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowIsFloating">true</item>

<!-- We can mix blur + dim or we can just go with blur. This is to remove the dimmed bg. -->
<item name="android:backgroundDimEnabled">false</item>

我还没有想出什么是追溯兼容性的最佳选择,但一旦我找到它,我会更新 post。