我正在设置一个像对话框一样的Activity,这是我的代码:
public class TetsDialog extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setTheme(android.R.style.Theme_Dialog);
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.RED));
}
}
但是如果我在活动的清单条目中添加它
android:theme="@android:style/Theme.Dialog"
所以我想要的是,具有透明背景的活动,如第二张图片,但只有setTheme()
。为什么这两个android:theme
和setTheme(android.R.style.Theme_Dialog)
都没有相同的结果?
关于制作透明的对话活动有很多问题(即使我发现谷歌代码上的问题与我的问题类似,但我丢失了链接),但没有一个有正确答案。
我怎样才能做到这一点?
答案 0 :(得分:0)
我前段时间研究过Android代码,发现:
在清单中设置主题时,某些属性可用于在活动构建之后以及在添加到窗口之前进行配置。 - >像透明活动这样的一些属性只能通过这种方式工作。
虽然按代码设置主题,但您只能调用onCreate
,而在那时,活动已完成初始工作并被分配到一个窗口(尚未附加) - >所以像透明这样的一些属性不会起作用。
所以基本上,通过xml和代码设置主题将返回不同的结果。而且我认为没有办法通过它 如果我错了,请随意纠正我。