当我运行我的Android应用程序时,我正在调用一种方法来检查应用程序是否在平板电脑上运行:
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(即设备满足其中一个条件)
我通过以下方式将主题设置为Dialog主题:
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);
}
我该如何复制?
答案 0 :(得分:10)
我似乎找到了自己问题的答案。
避免黑色背景:
在android清单中设置所有可以作为对话框主题的对话框(如果是平板电脑)的活动:
然后在onCreate
添加其他情况以更改非平板电脑设备(即手机)
if(isTablet(mContext)){
setTheme(R.style.myDialogTheme);}
else{
setTheme(R.style.MyTheme);
}