2017-08-05 82 views
2

這看起來像一個重複的問題,但我無法做到。我想要完整的透明(不是半透明)狀態欄以及導航欄,並希望內容出現在它們後面。顯示狀態和導航欄背後的內容

activity_details.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorPrimary" 
    tools:context="com.bitspilanidvm.bosm2017.DetailsActivity"> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:src="@drawable/q" 
    android:scaleType="centerCrop"/> 

</LinearLayout> 

V21 styles.xml

<resources> 

<!-- Theme for API level > 21 --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!--Customize your theme here. --> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
    <item name="android:navigationBarColor">@android:color/transparent</item> 
</style> 

在活動的java文件

getWindow().getDecorView().setSystemUiVisibility(
     View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
       View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
     ); 

這是我得到的。

enter image description here

如何獲得導航欄後面的內容?

如果我添加

<item name="android:windowTranslucentNavigation">true</item> 

我styles.xml

這裏是我所得到的

enter image description here

正如你所看到的,內容雲的背後導航欄,但導航欄必須是半透明的。

有沒有解決方案?

+0

不錯這個設備有沒有硬背按鈕? –

回答

7

在窗口中添加FLAG_LAYOUT_NO_LIMITS標誌。這將適用於Android KitKat和以上的API。這個例子是這樣的:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     Window window = getWindow(); 
    window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
    } 

之所以FLAG_FULLSCREEN不工作很簡單,因爲全屏標誌是去除屏幕花色像狀態欄(它爲你的作品)。但導航欄不是屏幕裝飾。 LAYOUT_NO_LIMIT標誌允許窗口延伸超出屏幕限制,因此導航欄也被覆蓋在該標誌內。

此外,您可以通過在沉浸模式下設置應用程序來隱藏導航和狀態欄。

+0

謝謝!它工作完美。請你簡單解釋一下爲什麼如此?爲什麼要將裝飾視圖系統UI可見性標誌設置爲View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN不起作用? –

+1

FLAG_FULLSCREEN不起作用的原因很簡單,因爲FULLSCREEN標誌用於移除狀態欄(適用於您)的屏幕裝飾。但導航欄不是屏幕裝飾。 LAYOUT_NO_LIMIT標誌允許窗口超出屏幕限制,因此導航欄也被覆蓋在該標誌內。 – Abhi

+0

如果答案解決了問題,請點擊答案旁邊的勾號圖標接受答案。 – Abhi