我正在尝试在SurfaceView
内显示Activity
,其主题扩展为Theme.Dialog
(您可以认为我试图在{{1}内展示它我有一些布局故障。
我无法拍照,因为拍摄截图时故障消失了:/但无论如何你看到Dialog
的“洞”从其原始位置移开并产生一些奇怪的叠加效果...
问题似乎与标志SurfaceView
有关,如果我将其设置为假,则故障就会消失......
是否有任何可能的解决方法继续使用windowIsFloating
标志?
重现问题的简单布局:
windowIsFloating
并修改此活动的主题,以便重现此问题:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff">
<FrameLayout android:id="@+id/container"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_centerInParent="true"
android:padding="30dp"
android:background="#ff0">
<SurfaceView android:id="@+id/surface"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
答案 0 :(得分:2)
似乎没有办法解决这个故障,只是windowIsFloating
标志与SurfaceView
非常错误......
所以,在这里得到答案How to create a transparent activity WITHOUT windowIsFloating后,我最终创建了一个扩展Dialog主题的主题,但将windowIsFloating
标记设置为false
和windowIsTranslucent
设置为{{ 1}}。
这样你需要手动创建一个行为像Dialog的布局,但你没有任何故障,你的背景可以完全透明:)
一个可以解决问题的主题示例:
true
然后您需要将边距应用于布局,否则它将作为正常活动全屏显示。
答案 1 :(得分:1)
我同意这一点,因为它可能对其他人有用。我在对话框中遇到了SurfaceView的透明度问题,以下答案帮助我解决了这个问题(我没有像这里建议的那样使用windowIsFloating = false,尽管它也可以解决这个问题):
https://stackoverflow.com/a/7061396/875442
事实证明我的问题是Z-ordering和透明度问题。