2017-01-16 73 views
2

使用沉浸式模式後,導航欄隱藏,但應用程序無法全屏顯示, 我在做什麼錯?沉浸式模式的全屏應用程序

下面是我給出的代碼。

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     this.getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
         | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 
} 

 @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
} 

enter image description here

任何幫助是有價值的。請幫助我以下。

+0

你可以發佈你的activity_main.xml請 –

+0

@Saeed Hashemi你好,你能告訴我你指向的箭頭是什麼黃色的東西?我沒有從這個圖像中得到這個想法:|你的最低sdk是多少? –

回答

2

您也可以使用此:(FLAG_LAYOUT_NO_LIMITS)

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

} 
1

爲了使您的活動全屏使用下面的代碼:

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

使用這裏面的onCreate()。

例子:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.example); 
    } 

UPDATE

您也可以使用此代碼段acheive你想要什麼。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    Window window = getWindow(); 
    // Translucent status bar 
    window.setFlags(
      WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, 
      WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    // Translucent navigation bar 
    window.setFlags(
      WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, 
      WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
} 

注:上面的代碼片段不需要setContentView(R.layout.la);super.onCreate(savedInstanceState);以上被寫入。這將顯示其他信息(如時間,電池等),但與您的應用程序佈局背景。

+0

我也使用這個代碼! – Saeed

+0

@SaeedHashemi:更新的答案可能會幫助你 –

0

這裏是我一直在用我的引人入勝的Android應用程序的代碼:

private void hideSystemUI() 
{ 
    getWindow().getDecorView().setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
} 

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if(hasFocus) 
     hideSystemUI(); 
} 

又撥打了hideSystemUI()setContentView()之後方法。 並在您的AndroidManifest.xml文件中,將屬性android:immersive="true"添加到您的活動標記中。

2
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

這對我有用。

1

這是我在我的一個生產應用程序中使用的代碼,該代碼也用於處理android api版本ImmersiveModeFragment.java。 當您離開您的應用程序並重新恢復時,它也會很小心。您可以下載該示例,並嘗試使用沉浸式應用應具備的所有功能。

相關問題