将活动显示为平板电脑上的重叠窗口

您如何在平板电脑上将活动显示为覆盖窗口? 其中的一个例子就是如下所示的新版Google+应用:

在这里输入图像说明

重要的是,我希望ActionBar成为窗口的一部分,下面的Activity将被调暗,如截图所示。

谢谢

Solutions Collecting From Web of "将活动显示为平板电脑上的重叠窗口"

你可以使用对话框主题。 要做到这一点,只需在清单中写入:

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

要么

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

或者只需在styles.xml中创build自己的主题:

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

您可以通过在values-xlarge或values-large文件夹中创buildstyles.xml来为xlarge或大屏幕设置此类主题。

如果您只想为平板电脑设置此主题,则可以通过像这样检查屏幕大小来dynamic更改主题:

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

如果你想与操作栏对话,请检查这个答案。 您可以通过创build自定义对话框来完成此操作。

对话主题活动与行动栏

自定义对话框

编辑:从谷歌组post的答案。 试试这在您的XML样式:

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

在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); } 

你应该在你的Manifest.xml使用Theme.Dialog作为Activity

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

为了将来的使用,你应该在你的值中使用CustomTheme values / values-11 / values-14-> styles.xml (编辑)

编辑:

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

在你的值中是styles.xml文件夹

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

例如你值-11 / 14 styles.xml文件夹

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

你需要扩大你的活动主题

 Theme.AppCompat.Light.DialogWhenLarge 

要么

 Theme.Holo.DialogWhenLarge 

这是一个例子

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