2013-05-26 12 views
7

Come si presenta un'attività come finestra di sovrapposizione su tavolette? Un esempio di questo è il nuovo Google+ app come si vede qui:Visualizza attività come finestra di sovrapposizione su tavolette

enter image description here

È importante sottolineare che voglio l'ActionBar di essere parte della finestra e per l'attività sotto per essere in grigio come si vede nello screenshot.

Grazie

risposta

10

Si può semplicemente utilizzare il tema di dialogo. Per fare questo, basta scrivere nel manifesto:

android:theme="@android:style/Theme.Dialog" 

o

android:theme="@android:style/Theme.Holo.Dialog" 

o semplicemente creando il tuo tema in styles.xml:

<style name="MyDialogTheme" parent="Theme.Holo.Dialog"> 
... 
</style> 

È possibile impostare come tema per xlarge o grande schermo creando styles.xml in valori-xlarge o valori-grandi cartelle.

Se si desidera impostare questo tema solo per i tablet, allora si può cambiare il tema in modo dinamico controllando la dimensione dello schermo come questo:

if (Configuration.SCREENLAYOUT_SIZE_XLARGE) 
{ 
//setTheme(yourDialogTheme); 
} 

prega di controllare questa risposta se si vuole dialogare con barra delle operazioni. Puoi farlo creando la tua finestra di dialogo personalizzata.

Dialog themed activity with action bar

Custom dialog

EDIT: una risposta da google group post.Prova questo in XML con stili:

<style name="PopupTheme" parent="android:Theme.Holo.Light.Dialog"> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowSoftInputMode">stateAlwaysHidden</item> 
     <item name="android:windowActionModeOverlay">true</item> 
     <item name="android:windowIsTranslucent">true</item> 
    </style> 

Nel codice Java

public static void showAsPopup(Activity activity) { 
     //To show activity as dialog and dim the background, you need to declare android:theme="@style/PopupTheme" on for the chosen activity on the manifest 
     activity.requestWindowFeature(Window.FEATURE_ACTION_BAR); 
     activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND, 
       WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
     LayoutParams params = activity.getWindow().getAttributes(); 
     params.height = LayoutParams.FILL_PARENT; 
     params.width = 850; //fixed width 
     params.alpha = 1.0f; 
     params.dimAmount = 0.5f; 
     activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
    } 
1

Si dovrebbe usare il Theme.Dialog in voi Manifest.xml per l'attività

android:theme="@android:style/Theme.Dialog" 

per uso futuro è necessario utilizzare un CustomTheme in te valori/valori-11/valori-14->styles.xml (EDIT)

EDIT:

  <activity 
      android:name="com.apps.ActivityP" 
      android:theme="@style/CustomTheme"/> 

in te valori styles.xml cartella

<style name="CustomTheme" parent="android:Theme.Black"> 

per esempio si valori-11/14 styles.xml cartella

<style name="CustomTheme" parent="android:Theme.Holo.Dialog"> 
+0

Ho provato questo e non ha alcun effetto sul mio Nexus 10. mio manifesto: styles.xml ​​@ Android: colore/trasparente ​​@ android: color/transparent Milo

+0

Inoltre dovresti controllare questo [collegamento] (http : //developer.android.com/guide/topics/ui/themes.html) – Oli

+0

Grazie, android: Theme.Holo.Dialog ha fatto il trucco. Non so perché, forse stavo ignorando altri stili da qualche altra parte. Tuttavia, non riesco a utilizzare ActionBar utilizzando quel tema. Ricevo una chiamata nullpointer: actionBar.setDisplayHomeAsUpEnabled (true); – Milo

0

È necessario misura il vostro tema di attività con

Theme.AppCompat.Light.DialogWhenLarge 

o

Theme.Holo.DialogWhenLarge 

Qui è un esempio

<style name="AppTheme.DialogActivity" parent="Theme.AppCompat.Light.DialogWhenLarge"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorPrimary</item> 
    <!-- Your theme here --> 
</style> 
Problemi correlati