当我的设备是平板电脑时,我想将一个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);
}
}
答案 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开发者的这个链接:
以下是内容:
公共建设者
Dialog(上下文上下文)创建一个对话框窗口 使用默认对话框主题 。对话框(上下文上下文, int themeResId ) 创建一个使用自定义对话框样式的对话框窗口 。
老实说,我找不到像setTheme
这样的Dialogs
方法。(我不太确定,但它不存在)。
我正在考虑您的实施,我认为这不是创建dialog
的好方法。请检查并尝试使用以下代码创建Dialog
:
public class MyAppCompatActivity extends Dialog
而不是您的代码:
public abstract class MyAppCompatActivity extends AppCompatActivity
我认为您以错误的方式执行此操作,例如Activity
。请检查以下链接以创建dialog
: