如何在平板电脑上呈现活动作为叠加窗口?一个例子是新的Google+应用程序,如下所示:
重要的是,我希望ActionBar成为窗口的一部分,并让下面的Activity变暗,如屏幕截图所示。
由于
答案 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
编辑: 来自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>