9

如何将 Activity 呈现为平板电脑上的覆盖窗口?这方面的一个例子是新的 Google+ 应用程序,如下所示:

在此处输入图像描述

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

谢谢

4

3 回答 3

10

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

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

或者

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

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

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

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

如果您只想为平板电脑设置此主题,则可以通过检查屏幕大小来动态更改主题,如下所示:

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

如果您想与操作栏对话,请检查此答案。您可以通过创建自定义对话框来做到这一点。

带有操作栏的对话框主题活动

自定义对话框

编辑:来自google group 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); 
    }
于 2013-05-26T11:38:16.950 回答
1

你应该Theme.Dialog在你Manifest.xml的活动中使用

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

以备将来使用,您应该在 values/values-11/values-14-> styles.xml(EDIT)中使用 CustomTheme

编辑:

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

在你的价值观styles.xml文件夹中

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

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

<style name="CustomTheme" parent="android:Theme.Holo.Dialog">
于 2013-05-26T11:35:09.987 回答
1

您需要扩展您的活动主题

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>
于 2016-11-18T10:09:05.053 回答