我正在与这一小时的战斗,我无法弄清楚发生了什么。我有一个带有几个标签的应用。此选项卡由TabGroupActivity管理。 在其中一个标签中,我必须开始一个透明的活动。如果我正常启动(使用startActivity),它看起来不错,但显然,标签栏不可点击。由于透明度而不可见“可见”。因此,为了使标签栏可以使用,我必须使用“startChildActivity”,这是一种定义为浏览特定选项卡内活动的方法。但是,当我这样做时,会显示活动,但背景是黑色的,而不是透明的。 我尝试了一切,但我看不出如何解决它。 下面是我认为问题可以解决的代码,因为它是启动活动和子活动之间的唯一区别。
在“主要”活动中,我加载了所有标签,每个标签都有一个与之相关的活动:
public class PreShowTabGroupActivity extends TabGroupActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startChildActivity("PreshowActivity", new Intent(this, PreshowActivity.class));
}
}
应该透明的活动是由“PreshowActivity”打开的活动。
以下是TabGroupActivity类中的startChildActivity方法。我试图透明,没有运气。
public void startChildActivity(String Id, Intent intent) {
Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
if (window != null) {
//window.set
mIdList.add(Id);
navController.notifyActivityChange();
setContentView(window.getDecorView());
window.getAttributes().alpha = 0;
window.getDecorView().setBackgroundColor(Color.TRANSPARENT);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
}
奇怪的是,如果我放置一个彩色背景(如RED或其他),背景会变为该颜色。但如果我将其配置为透明,则背景为黑色。
在我的Manifest中,我尝试了透明和半透明主题,但没有运气。
如果你能帮助我,我会完全欣赏它。
谢谢!
答案 0 :(得分:0)
我很抱歉在这里使用“猜测”这个词,但这更像是一个受过教育的“猜测”。 我有一个类似的问题,我无法弄清楚为什么黑色背景显示为透明。如果我将那种黑色改为RED,那么它会显示红色。 这与称为格式的窗口属性有关。 如果你改变这个windo的属性:
window.getAttributes()。format = PixelFormat.TRANSLUCENT;
这意味着黑色背景实际上是透明的。 现在,关于你的问题,我的“有根据的猜测”是startChildActivity获取其父窗口的窗口属性,而startActivity创建一个具有不同属性集的窗口(可能是TRANSLUCENT)。