2012-11-22 103 views
0

我的應用程序使用作爲佈局創建自定義標題欄並使用此格式實現:自定義標題欄延遲

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.my_layout); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_custom_title); 
super.onCreate(savedInstanceState); 

現在它沒有使用常規的主題android:Theme.Light工作,也沒有android:Theme.Light.NoTitleBar,他們都導致當調用setContentView時發生致命異常。因此,我創建它看起來像這樣自定義樣式:

<style name="MyWindowTitleBackground"> 
    <item name="android:background">#000000</item> 
</style> 

<style name="CustomTheme" parent="android:Theme.Light"> 
    <item name="android:windowTitleBackgroundStyle">@style/MyWindowTitleBackground</item> 
    <item name="android:windowActionBar">false</item> 
    <item name ="android:windowTitleSize">35dip</item> 
</style> 

然而,每一個應用程序被啓動有在啓動和使用自定義標題欄的實際佈局的顯示器之間有一個小的延遲時間,在此延遲默認的標題欄顯示在其中的應用程序名稱。大約一秒鐘後,當Oncreate完成時,自定義標題被加載並顯示。

有什麼辦法解決這個問題嗎?我究竟做錯了什麼?

+0

沒有辦法。它是一個惱人的錯誤。試試官方的Skype應用程序,你會發現它有同樣的問題。 – Warpzit

+0

如果沒有辦法,每個具有自定義標題的應用程序都應該有這個bug。例如,Dropbox應用程序不會顯示此行爲。 – XorJoep

+0

在我的Dropbox應用程序中沒有標題。你可以給標題欄加標題嗎? – Warpzit

回答

1

嘗試把

super.onCreate(savedInstanceState); 

其他行之前,看看是否可行。

,並把

setContentView(R.layout.my_layout); 

最後。我似乎記得我的應用程序崩潰,因爲我的順序錯誤。

+0

這是行不通的..我在把super.onCreate(..)放在不同的地方時沒有看到任何區別。在調用findViewById()時,將SetContentView放置在getWindow()之後,會在各個位置產生空指針。 – XorJoep