2017-08-05 15 views
2

これは重複した質問のようですが、私はそれを行うことができません。私は完全な透明(半透明ではない)のステータスバーとナビゲーションバーを望み、その背後にコンテンツを表示したい。活動のJavaファイルでステータスとナビゲーションバーの内容を表示

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> 

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

これは私が得るものです。ナビゲーションバーの背後にあるコンテンツを取得する方法

enter image description here

私は私のstyles.xmlここ

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

を追加する場合は、あなたが見ることができるように、私は

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); 
    } 

FULLSCREENフラグが(あなたのために働く)ステータスバーのような画面装飾を除去するためのものであるので、FLAG_FULLSCREENが動作しない理由は単純です:この例は、このようなものになるだろう。ただし、ナビゲーションバーは画面の装飾ではありません。 LAYOUT_NO_LIMITフラグを使用すると、ウィンドウが画面の限界を超えて拡張されるため、ナビゲーションバーもこのフラグでカバーされます。

また、没入型モードでアプリを設定することで、ナビゲーションとステータスバーを非表示にすることもできます。

+0

ありがとう!それは完璧に働いた。理由を簡単に説明していただけますか?なぜデコレーションビューシステムを設定するのですか?View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENへの可視性フラグは機能しませんでしたか? –

+1

FLAG_FULLSCREENが機能しない理由は、FULLSCREENフラグがステータスバーのようなスクリーンデッカーを取り除くためのものであるためです。ただし、ナビゲーションバーは画面の装飾ではありません。 LAYOUT_NO_LIMITフラグは、ウィンドウが画面の限界を超えて広がることを可能にします。したがって、ナビゲーションバーもこのフラグでカバーされます。 – Abhi

+0

回答が解決された場合は、回答の横にあるチェックマークをクリックして回答を受け入れてください。 – Abhi

関連する問題