当我运行我的
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); }
我该如何复制这个?
解决方法
我似乎找到了自己问题的答案.
为了避免黑色背景:
在android清单中,将所有可能是对话框(如果是平板电脑)的活动设置为对话框主题:
然后在onCreate添加其他情况更改为非平板设备(即手机)
if(isTablet(mContext)){ setTheme(R.style.myDialogTheme);} else{ setTheme(R.style.MyTheme); }