android – 设置主题Programmactically导致黑色背景

当我运行我的 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);
}

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...