当弹出窗口显示时更改背景颜色

6
PopupWindow显示时,我希望将背景变暗,就像Dolphin浏览器做的一样 - 在显示PopupWindow之前 在显示PopupWindow之前查看背景颜色 在显示PopupWindow之后 现在查看PopupWindow显示后的背景颜色。 背景颜色比原来更暗。那么,我们该如何做呢?
4个回答

5
在您的xml文件中添加类似以下内容,并将宽度和高度设置为“match_parent”。
<RelativeLayout
        android:id="@+id/bac_dim_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#C0000000"
        android:visibility="gone" >
</RelativeLayout>

在你的活动中创建

//setting background dim when showing popup
back_dim_layout = (RelativeLayout) findViewById(R.id.bac_dim_layout);

最后,在显示弹出窗口时使其可见,并在退出弹出窗口时使其可见消失。

back_dim_layout.setVisibility(View.Visible);
back_dim_layout.setVisibility(View.GONE);

0

如果我没记错的话...你可以创建一个带有ListView的Activity....并在其清单文件中将主题设置为对话框,像这样...

 <activity android:theme="@android:style/Theme.Dialog" />

这将使背景变暗。


好的,但是...为什么要更改代码并将PopupWindow变成一个活动? - Rajkiran
1
因为你的弹出窗口将是一个活动,它将有自己的背景... 默认情况下是黑色... 给出所需的效果.. - 5hssba
同意,但是我在问为什么你有PopupWindow控件时还要调用一个Activity。不管怎样,如果其他方法都不起作用,我会选择这个解决方案。 - Rajkiran

0

如果你的弹出窗口是一个活动,那么尝试这段代码肯定会有帮助。 在你的项目的values文件夹中创建一个mystyle.xml文件,并进行以下更改。

<resources> 
   <style name="customStyle" parent="@android:style/Theme.Dialog">
     <item name="android:windowBackground">@android:color/transparent</item>
   </style>
</resources>

menifest.xml 中进行此更改

<activity android:name="yourActivity" android:theme="@style/customStyle"></activity>

1
正如我之前提到的,我使用 PopupWindow 控件而不是 Activity - Rajkiran

0
fun setBackgroundAlpha(activity: Activity, bgAlpha: Float) {
    val lp: WindowManager.LayoutParams = activity.getWindow().getAttributes()
    lp.alpha = bgAlpha
    activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
    activity.getWindow().setAttributes(lp)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接