当我运行我的安卓应用程序时,我会调用一个方法来检查该应用程序是否在平板电脑上运行,使用以下代码:
public boolean isTablet(Context context){
boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)== Configuration.SCREENLAYOUT_SIZE_MASK);
return(xlarge || large);
}
如果该方法返回true(即设备满足以下条件之一),
我通过以下方式将主题设置为对话框主题:
setTheme(R.style.MyTheme);
其中MyTheme
是从父Theme.Holo.Light.Dialog
继承的主题。
这个逻辑可以正常工作,但是它会在背景上产生奇怪的效果。调用意图完全被黑掉了,而如果我只是在清单中设置主题,背景只会稍微变灰。
更新-添加的代码
private Context mClassContext = this;
@Override
public void onCreate(Bundle savedInstanceState){
if(isTablet(mClassContext)){
setTheme(R.style.MyTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
}
我该如何复制这个?
SetContentView()
之前执行setTheme
吗? - kaderudonCreate()
。 - kandroidjsetContentView()
之后,但它没有设置我的主题。我以前尝试过这个方法。如果你想要设置主题,你必须在调用setContentView()
之前进行设置。我只是不明白为什么背景会完全变黑。 - kandroidj