2013-05-26 10 views
7

Wie präsentieren Sie eine Aktivität als Overlay-Fenster auf Tablets? Ein Beispiel dafür ist die neue Google+ App wie hier zu sehen:Aktivität als Overlay-Fenster auf Tablets anzeigen

enter image description here

Wichtig Ich mag die ActionBar Teil des Fensters und für die Tätigkeit, die unter gedimmt werden, wie im Screenshot zu sehen.

Dank

Antwort

10

Sie haben soeben Dialog Thema verwenden können. Um dies zu tun, schreiben Sie einfach in Manifest:

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

oder

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

oder einfach nur durch Ihr eigenes Thema in styles.xml erstellen:

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

Sie können solches Thema Sets für xlarge oder großen Bildschirm durch Erstellen von styles.xml in Werte-xlarge oder Werte-große Ordner.

Wenn Sie dieses Thema für Tabletten nur einstellen möchten, dann können Sie Thema dynamisch ändern, indem Sie die Bildschirmgröße wie diese Überprüfung:

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

Bitte diese Antwort, wenn Sie diesen Dialog mit Aktionsleiste möchten. Sie können dies tun, indem Sie Ihr benutzerdefiniertes Dialogfeld erstellen.

Dialog themed activity with action bar

Custom dialog

EDIT: Eine Antwort von google group post.Versuchen Sie, diese in Ihrem xml mit Stile:

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

In Java-Code

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

Sie sollten die Theme.Dialog in Sie Manifest.xml für die Aktivität verwenden

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

für die zukünftige Verwendung sollten Sie eine CustomTheme in Ihnen Werte/Werte-11 verwenden/Werte-14->styles.xml (EDIT)

EDIT:

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

in Sie Werte styles.xml Ordner

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

Sie zum Beispiel Werte-14.11 styles.xml Ordner

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

Ich habe dies versucht, und es hat keinen Einfluss auf mein Nexus 10. Mein Manifest: styles.xml Milo

+0

Auch sollten Sie diese [link] (http : //developer.android.com/guide/topics/ui/themes.html) – Oli

+0

Danke, android: Theme.Holo.Dialog hat den Trick gemacht. Ich bin mir nicht sicher warum, vielleicht habe ich woanders andere Stile außer Kraft gesetzt. Allerdings scheint ich nicht in der Lage, die ActionBar mit diesem Thema zu verwenden. Ich bekomme einen Nullpointer Aufruf: actionBar.setDisplayHomeAsUpEnabled (true); – Milo

0

Sie benötigen eine Aktivität Thema Ausmaß mit

Theme.AppCompat.Light.DialogWhenLarge 

oder

Theme.Holo.DialogWhenLarge 

Hier ist ein Beispiel

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