2012-05-07 12 views
13

Mi piacerebbe avere un'attività (2) con l'aspetto traslucido su un'altra attività (1), allineata nella parte superiore dello schermo (4).Attività traslucida che riempie l'intero schermo

enter image description here

ho cercato di assegnare questi temi al numero di attività 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>  

Ma il risultato è sempre 3.

Se ho impostato <item name="android:windowIsFloating">false</item> nel CustomTheme il risultato è 2.

Qualcuno può dirmi come posso ottenere 4? Grazie!

UPDATE: Questa è la mia attività di 2 Layout:

<?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.it/questions/36305283/how-to-make-translucent-activity – Mangesh

risposta

19

Infine, questo tema ha lavorato per ottenere un risultato come numero di immagine 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> 

Nel mio layout di attività 2, potrei eihter impostare android:background="@android:color/transparent" o non impostato alcun valore a tutti per farlo funzionare .

Grazie a MikeIsrael e Veer per il loro aiuto.

+0

Ho appena fatto ciò che hai scritto e non funziona. Ho uno stile come il tuo ultimo, quello nella risposta. 2 attività, e manca qualcosa perché non è trasparente :( – Taochok

3

Prima hanno l'attività Tema Trasparente:

<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> 

Assegnare il tema trasparente per la vostra attività in manifesto:

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

Creare il layout secondo il vostro requir ement e imposta la visualizzazione del contenuto della tua attività su quel layout.

Prova seguente schema:

<?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> 

La speranza è utile.

+0

Non funziona. Ottengo il mio pulsante Menu nel mezzo (come l'immagine numero 3) senza l'effetto traslucido. –

+0

puoi pubblicare il tuo layout xml che ha il pulsante menu? – Veer

+0

Prova layout che è stato aggiunto nella mia risposta – Veer

0

Non sono sicuro di come farlo tramite l'xml, ma questo dovrebbe funzionare a livello di codice, prova ad aggiungerlo alla tua attività (forse alla vista principale dell'attività).

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

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

L'ho provato senza Tema applicato alla mia attività, e ho ottenuto lo stesso risultato del numero di immagine 2. Applicato con il mio CustomTheme, ho ottenuto il numero 3 senza l'effetto traslucido. –

+0

@Xavi hmmm, beh forse il dim non è dall'attività ma dal layout principale o qualcosa del genere. Che ne dici di provare a chiamare getWindow() su questo? Forse prova ad aggiungere un id al realtivelayout, quindi aggiungi il layout a findViewBy e poi chiama get window sul layout. Qualche cambiamento? – MikeIsrael

10

Ho letto le altre soluzioni, ma qui è la mia soluzione:

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

Se si utilizza AppCompatActivity allora dovresti usare come genitore Theme.AppCompat altrimenti applicat ione può bloccarsi o bloccarsi con errori (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

Buon punto, grazie per l'heads up. Questo ha funzionato per me. – Alix

Problemi correlati