我找到了这个最优秀的解决方案来解决我在这里要解决的问题:
Blur or dim background when Android PopupWindow active
但是,我无法通过设置Alpha来使父视图变暗。我正在使用矩形形状,因为解决方案建议Drawable是GradientDrawable。这是我正在使用的代码:
@Override
public void onViewPhoto(PostObject item) {
rootView.getForeground().setAlpha(220);
rootView.invalidate();
PhotoPopup pp = new PhotoPopup(getActivity(), rootView, item.getObject_Id());
pp.show();
rootView.getForeground().setAlpha(0);
rootView.invalidate();
}
上面的代码位于将托管弹出窗口的父片段中。它是通过自定义回调调用的。当用户单击listview项目中的照片时,调用由ArrayAdapter派生的适配器进行。
我在KitKat(华硕Memo Pad)和JellyBean(三星Galaxy Tab 2)上试过这个 有什么想法吗?
完整性:这是布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/streamList_rootFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="@drawable/shape_dim_window" >
<ListView
android:id="@+id/streamList_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</FrameLayout>
形状本身:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#000000" />
</shape>
答案 0 :(得分:0)
您可以DIALOG
使用android:theme="@android:style/Theme.Dialog"
来执行此操作。
创建活动并在AndroidManifest.xml
中将活动定义为:
<activity android:name=".activity.YourActivity"
android:label="@string/your_activity_label"
android:theme="@android:style/Theme.Dialog">
它会创建一个popup
,你的背景会变暗。