2013-06-23 42 views
2

我試圖顯示ActivitySurfaceView內有一個主題,延伸Theme.Dialog(你可以認爲我試圖展示它在Dialog類),但我有一些佈局故障。SurfaceView裏面的對話框(或Activity與Theme.Dialog)有佈局故障

我無法拍攝照片,因爲在拍攝屏幕截圖時毛刺會消失:/但無論如何,你看到的是SurfaceView的「洞」已經從原來的位置移開,併產生了一些奇怪的重疊效果......

這個問題似乎與標誌windowIsFloating有關,如果將它設置爲false,故障消失......

任何想法可能的解決方法繼續使用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> 

和修改活動的主題是這樣來重現問題:

<style name="MyTheme" parent="@android:style/Theme"> 
    <item name="android:windowIsFloating">true</item> 
</style> 

回答

2

好像沒有解決小故障的方法,只需windowIsFloating國旗是與SurfaceView ...

所以,這裏也繼答案How to create a transparent activity WITHOUT windowIsFloating,我結束了創建一個擴展對話的主題,但設置windowIsFloating標誌falsewindowIsTranslucenttrue一個主題。

需要手動創建一個像一個對話框的佈局方式,但你沒有任何毛刺和你的背景可以是完全透明的:)


主題的Symple例子會訣竅:

<style name="MyTheme" parent="@android:style/Theme"> 
    <item name="android:windowIsFloating">false</item> 
    <item name="android:windowIsTranslucent">true</item> 
</style> 

然後,您需要應用邊距到您的佈局,否則它將作爲一個普通的活動全屏。

1

我分享此信息是因爲它可能對他人有用。我碰到的一個問題,透明度與對話內SurfaceView和下面的回答幫我解決這個問題(我沒有使用windowIsFloating = false作爲這裏雖然它也不會把戲建議):

https://stackoverflow.com/a/7061396/875442

事實證明,我的問題是Z-順序和透明度問題。