2017-06-04 66 views
0

我在我的應用程序實現的佈局,飛濺小屏幕下面這個教程:https://www.bignerdranch.com/blog/splash-screens-the-right-way/Android狀態欄隱藏/變色

我設法改變狀態欄的顏色,我的MainActivity,甚至使它全屏使用一個主題。然而,我嘗試過的方法都沒有與閃屏一起工作。也許是因爲它不使用佈局,但直接的可繪製背景:

<style 
    name="AppTheme" 
    parent="@android:style/Theme.Material.Light.NoActionBar"> 

    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:textColor">@color/textColor</item> 
    <item name="iconColor">@color/iconColor</item> 
    <item name="android:statusBarColor">@color/colorPrimaryDark</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
</style> 

<style 
    name="SplashTheme" 
    parent="AppTheme"> 

    <item name="android:windowBackground">@drawable/splash_screen</item> 
</style> 

我使用全屏主題試過,設置機器人:在由活動使用的主題statusBarColor,我也試過以下兩個位代碼:

View decorView = getWindow().getDecorView(); 
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 

Window window = getWindow(); 
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
window.setStatusBarColor(ContextCompat.getColor(this, android.R.color.transparent)); 

這4種方法正在爲我的正常活動,但不是爲閃屏。有什麼我可以做的嗎?

編輯:我靶向的minSdkVersion 23

回答

1

好吧,經過更多的實驗後,結果發現我有某種緩存問題。我嘗試在另一部手機上安裝我的應用程序,它按預期工作,而在第一部手機上安裝了該應用程序,但它沒有更新。所以,只要你知道,android:statusBarColor的簡單解決方案就足以讓它工作。

現在關於緩存問題,這不是我第一次使用該屏幕,它必須是沒有佈局和可繪製背景的特定條件。我試圖使Android Studio中的緩存無效,我清理並重建了項目,我在手機上卸載了應用程序,但沒有任何效果。因此,如果您在此配置中,只要嘗試在另一部手機上運行您的應用程序,只是爲了檢查您的解決方案是否已經運行,而不是在您的設備上進行更新。

1

使用<item name="android:windowFullscreen">true</item>

<style 
    name="SplashTheme" 
    parent="AppTheme"> 
    <item name="android:windowFullscreen">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    <item name="android:windowBackground">@drawable/splash_screen</item> 
</style> 
+0

不工作:(狀態欄仍顯示爲灰色。 –

+0

在樣式添加這個問題,以及「<項目名稱=」 windowActionBar「>假 <項目名稱=」 windowNoTitle「>真」要不然變化父主題值爲「Theme.AppCompat.Light.NoActionBar」然後它應該工作 –

+0

不,這不是問題,父主題已經是NoActionBar無論如何,我真的認爲這個問題與活動沒有佈局的事實有關。 –

0

我幾個月前得到了類似的問題。我設法通過使用以下代碼來解決這個問題。

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

在使用後的setContentView你的java文件,上面的代碼。

然後在清單文件中使用這個命令來嘗試隱藏標題欄。

android:theme="@style/Theme.AppCompat.NoActionBar"

要更改標題欄的顏色,你可以使用下面的代碼行,

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000"))); 

替換要添加到標題欄的顏色的十六進制代碼在代碼的價值部分。

+0

我認爲你錯誤的是操作欄的狀態欄,狀態欄是顯示通知,電池和時間的小欄。 –

+0

要更改狀態欄的顏色,請使用此代碼。在你的情況下,你試圖將它設置爲透明,所以通過使用它,你可以得到一個透明的狀態欄。 getWindow()。setStatusBarColor(Color.TRANSPARENT); PS - 此方法僅適用於API 19及更高版本。 如果還是不行,請嘗試styles.xml <項目名稱=「機器人:windowTranslucentStatus」>這個代碼段真正 – 2017-06-04 18:42:29

+0

您還可以在/res/values-v21/styles.xml做到這一點: @ android:color/transparent 2017-06-04 18:42:50