在平板电脑上将活动显示为叠加窗口

时间:2013-05-26 11:33:44

标签: android android-activity tablet

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

enter image description here

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

由于

3 个答案:

答案 0 :(得分: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);
}

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

Dialog themed activity with action bar

Custom dialog

编辑: 来自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); 
    }

答案 1 :(得分:1)

您应该使用Theme.Dialog Manifest.xml作为活动

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

以备将来使用时,您应该在值/值-11 /值-14-&gt; styles.xml(编辑)中使用CustomTheme

编辑:

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

答案 2 :(得分: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>