2012-02-07 76 views
1

我与这一堆小时斗争,我无法弄清楚发生了什么。我有几个选项卡的应用程序。此选项卡由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)); 

    } 
} 

奇怪的是,如果我把颜色背景(如红色或其他),背景改变为该颜色。但如果我将其配置为透明,背景为黑色。

在我的Manifest中,我尝试了透明和半透明的主题,但没有运气。

如果你能帮助我,我会充分理解它。

谢谢!

+0

难道它背后有一个背景是黑色的,它确实是透明的,所以你看到它背后的黑色背景? – AJcodez 2012-02-07 17:53:56

+0

虽然它,但我很确定它不是,因为我在“startChildActivity”方法中做了以下测试:我将decorView背景设置为RED,然后将窗口背景设置为TRANSPARENT,而不是显示RED背面,它显示一个黑色的背景。 – DiamondGerace 2012-02-07 17:56:18

回答

0

我很抱歉不得不在这里使用“猜测”这个词,但这更像是一个受过教育的“猜测”。 我有一个类似的问题,我不知道为什么黑色背景显示为透明。如果我已将该黑色更改为红色,则会显示红色。 这与窗口的属性称为格式有关。 如果你改变这个windo的财产是这样的:

window.getAttributes()。format = PixelFormat.TRANSLUCENT;

这意味着黑色背景实际上是透明的。 现在,关于你的问题,我的“受过教育的猜测”是startChildActivity接受了父窗口的窗口属性,而startActivity创建了一个具有不同属性集合的窗口(可能是TRANSLUCENT)。