为什么设置主题以编程方式产生与清单不同的结果?

时间:2014-03-20 00:47:21

标签: android themes manifest

我很好奇,如果我做错了或者这只是一个错误......

当我在清单中为我的活动设置主题时:

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

生成的活动有一个半透明背景,通过它我可以看到堆栈下一个活动。

但是,当我将该命令从我的清单中删除并在我致电super.onCreate之前执行此操作

public void onCreate(Bundle b){
   setTheme(android.R.style.Theme_Dialog);
   super.onCreate(b);
}

我认为这是在您的Activity上以编程方式设置主题的正确方法, 内容在对话框中正确显示在屏幕中央,但背景完全是黑色。

我应该使用其他*其他主题吗?我觉得我一定错过了什么。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要以编程方式设置半透明背景,通过该背景可以看到下面的屏幕。如果我没记错的话,Theme_Translucent用于相同的(如果你想以编程方式设置它)。文档说:

  

public static final int Theme_Translucent

     

半透明活动主题(API级别10及更低级别)。也就是说,窗户可以让你透过它们看到后面的窗户。这会为您的窗口设置半透明标志和适当的动画。

另请查看以下主题:https://groups.google.com/forum/?fromgroups=#!topic/android-developers/vSZHsVWUCqk。这谈到了你提出的完全相同的观察,但答案仍然不能令人满意。