2012-05-07 88 views
13

我想要在屏幕頂部(4)對齊的另一個活動(1)上進行半透明方面的活動(2)。填充整個屏幕的半透明活動

enter image description here

我曾嘗試通過將這些主題活動編號2:

<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"> 
    <item name="android:windowBackground">@android:color/black</item> 
</style> 

<style name="CustomTheme"> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:background">@android:color/transparent</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowNoTitle">true</item> 
</style>  

但結果始終是3

如果我在CustomTheme結果是2集<item name="android:windowIsFloating">false</item>

有人可以告訴我如何得到4嗎?謝謝!

UPDATE:這是我的活動2佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" android:background="#0000"> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:background="#FFFFFF"> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Menu" android:layout_centerHorizontal="true"/> 

    </RelativeLayout> 

</RelativeLayout> 
+0

http:// stackoverflow。com/questions/36305283/how-to-make-translucent-activity – Mangesh

回答

19

最後,這個主題的工作得到像圖像數字4的結果:

<style name="Theme.CustomTranslucent" parent="android:style/Theme.Translucent"> 
     <item name="android:backgroundDimEnabled">true</item> 
     <item name="android:backgroundDimAmount">0.5</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:background">@android:color/transparent</item> 
</style> 

在我的活動2的佈局,我可以eihter設置android:background="@android:color/transparent"或不設置任何價值可言,使其工作。

感謝MikeIsrael和Veer的幫助。

+0

我只是做了你寫的東西,它不起作用。我有一種類似你最後一種,就是答案中的一種。 2個活動,並且由於它不透明而丟失了一些東西:( – Taochok

3

首先有透明主題活動:

<style name="Theme.Transparent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
</style> 

分配透明主題,以你的活動清單:

<activity android:name=".MyActivity" 
       android:label="@string/app_name" 
       android:theme="@style/Theme.Transparent"/> 

根據您的需求創建佈局並將您的活動的內容視圖設置爲該佈局。

嘗試以下佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/transparent"> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FFFFFF" 
     android:layout_alignParentTop="true"> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Menu" android:layout_centerHorizontal="true"/> 

    </RelativeLayout> 

</RelativeLayout> 

希望這是有幫助的。

+0

它不起作用。我得到我的菜單按鈕在中間(如圖像編號3)沒有半透明效果。 –

+0

你可以發佈你的佈局xml有菜單按鈕嗎? – Veer

+0

嘗試在我的答案中添加的佈局 – Veer

0

我不知道如何通過xml來實現,但這應該以編程方式工作,嘗試將其添加到您的活動(可能是活動的主視圖)。

//grab layout params 
WindowManager.LayoutParams lp = this.getWindow().getAttributes(); 

//remove the dim effect 
lp.dimAmount = 0; 
+0

我嘗試了沒有應用於我的活動的主題,並得到了與圖像編號2相同的結果。與我的CustomTheme一起應用,我得到了沒有半透明效果的3號。 –

+0

@Xavi嗯,也許朦朧不是來自活動,而是主要佈局什麼的。如何嘗試調用getWindow()呢?也許嘗試添加一個id到realtivelayout,然後通過findViewBy對佈局進行修改,然後在佈局上調用get窗口。任何改變? – MikeIsrael

10

我讀過其他的解決方案,但這裏是我的解決方案:

style.xml

<resources> 
<style name="mytransparent.windowNoTitle" parent="android:Theme.Holo.Light"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:background">@android:color/transparent</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation</item> 
</style> 
<style name="mytransparent.windowTitle" parent="android:Theme.Holo.Light"> 
    <item name="android:background">@android:color/transparent</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation</item> 
</style> 

AndroidManifest.xml中

<activity 
    android:name=".LoginActivity" 
    android:theme="@style/mytransparent.windowTitle" 
    android:configChanges="orientation" 
    android:label="@string/title_activity_login" 
    android:screenOrientation="portrait" ></activity> 
5

如果使用AppCompatActivity那麼你應該使用父母Theme.AppCompat否則應用離子可能會掛起或崩潰(java.lang.RuntimeException: Unable to start activity ComponentInfo ... Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.)

<style name="URTransparent" parent="Theme.AppCompat"> 
    // Copied from Theme.Translucent 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    <item name="android:windowIsTranslucent">true</item> 

    <item name="android:backgroundDimEnabled">true</item> 
    <item name="android:backgroundDimAmount">0.5</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
    <item name="android:background">@android:color/transparent</item> 
</style> 
+0

好點,謝謝你的擡頭。這對我很有用。 – Alix