Android 将活动显示为平板电脑上的覆盖窗口

Android 将活动显示为平板电脑上的覆盖窗口,android,android-activity,tablet,Android,Android Activity,Tablet,如何在平板电脑上以叠加窗口的形式呈现活动?新的Google+应用程序就是一个例子,如下所示: 重要的是,我希望ActionBar成为窗口的一部分,下面的活动如屏幕截图所示变暗 谢谢您应该使用Manifest.xml中的主题对话框进行活动 android:theme="@android:style/Theme.Dialog" 为了将来使用,您应该在values/values-11/values-14->styles.xml(编辑)中使用自定义主题 编辑: 例如,您可以使用values-11/1

如何在平板电脑上以叠加窗口的形式呈现活动?新的Google+应用程序就是一个例子,如下所示:

重要的是,我希望ActionBar成为窗口的一部分,下面的活动如屏幕截图所示变暗


谢谢

您应该使用
Manifest.xml中的
主题对话框
进行活动

android:theme="@android:style/Theme.Dialog"
为了将来使用,您应该在values/values-11/values-14->
styles.xml
(编辑)中使用自定义主题

编辑:

例如,您可以使用values-11/14
styles.xml
文件夹

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

您可以使用对话框主题。为此,只需在清单中写入:

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

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

<style name="MyDialogTheme" parent="Theme.Holo.Dialog">
...
</style>
如果您想使用操作栏进行对话,请检查此答案。您可以通过创建自定义对话框来实现这一点

编辑: 我的回答是。试试这个 在具有样式的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>

你需要扩展你的活动主题

Theme.AppCompat.Light.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>

@颜色/原色
@颜色/原色暗
@颜色/原色

我已经试过了,但它对我的Nexus 10没有任何影响。我的清单:Styles.xml@android:color/transparent@android:color/transparent你也应该检查一下谢谢,android:Theme.Holo.Dialog成功了。不知道为什么,也许我在别的地方凌驾于其他风格之上。然而,我似乎无法使用这个主题的ActionBar。我得到一个空指针调用:actionBar.setDisplayHomeAsUpEnabled(true);我编辑了我之前的评论,我刚刚意识到在使用android:Theme.Holo.Dialog主题时我不能使用ActionBar,有什么想法吗?请检查我的答案,关于ActionBar。
<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>
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); 
    }
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>