2012-02-07 38 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)。