以编程方式将AppCompatActivity显示为对话框

时间:2016-01-12 13:16:14

标签: android dialog android-appcompat

当我的设备是平板电脑时,我想将一个Activity(使用AppCompat)显示为Dialog。

这是 MyAppCompatActivity

的主题
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowNoTitle">true</item>
</style>

当我直接将此主题放在我的Manifest.xml中时,工作正常:

<activity android:name=".MyAppCompatActivity" android:theme="@style/AppDialogTheme"/>

但是当我想以编程方式设置我的主题时,我的Activity显示为对话框,但背景叠加层是黑色的(并且第一种方法不透明)。这是我的代码:

public abstract class MyAppCompatActivity extends AppCompatActivity 
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
         if(isTablet)
         {
             setTheme(R.style.AppDialogTheme);
         }

        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
    }
}

1 个答案:

答案 0 :(得分:0)

尝试使用波纹管代码更改背景颜色:

<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowNoTitle">true</item>
    <item name="android:background">#FF0000</item> //Your custom background color
</style>

当然,您可以更改自定义my_layout的背景颜色,如下所示:

android:background="#FF0000"

你是对的,似乎该对话框显示为深色。但是,根据 this code 文档,如果您在large screens上使用,必须在Manifest中添加:

<activity android:theme="@android:style/Theme.Holo.DialogWhenLarge" >

使用AppCompat

Theme.AppCompat.Light.DialogWhenLarge
// or
Theme.AppCompat.DialogWhenLarge

还有别的,请查看Android开发者的这个链接:

enter image description here

以下是内容:

  

公共建设者

     

Dialog(上下文上下文)创建一个对话框窗口    使用默认对话框主题 。对话框(上下文上下文, int   themeResId 创建一个使用自定义对话框样式的对话框窗口

老实说,我找不到像setTheme这样的Dialogs方法。(我不太确定,但它不存在)。

我正在考虑您的实施,我认为这不是创建dialog的好方法。请检查并尝试使用以下代码创建Dialog

public class MyAppCompatActivity extends Dialog

而不是您的代码:

public abstract class MyAppCompatActivity extends AppCompatActivity 

我认为您以错误的方式执行此操作,例如Activity。请检查以下链接以创建dialog

Android Developers