2017-07-20 35 views
1

在我的Android應用我躲在使用此軟鍵欄:如何隱藏的Android功能鍵

View decorView = getWindow().getDecorView(); 

int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 

decorView.setSystemUiVisibility(uiOptions); 

但問題是,當一些消息框或吐司顯示然後再次軟鍵顯示。 我想在任何消息框或吐司顯示時隱藏軟鍵。

是否有可能..我怎麼能做到這一點。

+0

在其生命週期的方法你實現這個? onCreate()我假設 –

+0

是的。的onCreate() – Trilok

+0

你可以在一個方法包這件事並調用該方法要隱藏軟鍵每次。 –

回答

1

消息像對話,意圖選擇器,軟鍵盤和烤麪包使用不同的窗口比你的應用程序主窗口。
這些額外的Windows可以改變你的SystemUiVisibility和Window的標誌,因爲它們出現和消失。

我找到了在大多數情況下工作是設置你的旗幟onWindowFocusChanged在活動類:

public void onWindowFocusChanged(boolean hasFocus) { 
    if(hasFocus) { 
     View decorView = getWindow().getDecorView(); 

     int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 

     decorView.setSystemUiVisibility(uiOptions); 
    } 
} 

然後,您不再需要的onCreate這個代碼,如窗口焦點在活動創作也得到了。

+0

你的解決方案是完美的。但問題是我在錄像中使用了這個功能,然後在錄製的視頻中顯示和隱藏軟鍵效果。 – Trilok

+0

使用這些標誌總是有點棘手。如果它沒有按預期工作,通常是因爲窗口改變(MediaViewer for videoview也在單獨的窗口中)。我不知道你目前的困難,但我會做一個'setFullscreen(布爾)'方法設置正確的標誌,然後嘗試調用,在所有能想到的,可能是正確的,地點。 – RobCo