2016-08-22 7 views
13

Androidのマルチウィンドウサポートでは、ステータスバーが表示されているかどうかをどのように検出しますか?たとえば、縦向きの場合は、トップアプリの場合はステータスバーが表示されますが、下位アプリの場合は表示されません。今、私がそこにいないステータスバーのためのスペースを作るので、私の意見は一番下の方が面白いです。Androidマルチウィンドウのサポート:ステータスバーが表示されているかどうかを検出していますか?

+3

は、プログラムステータスバー用のスペースをしないでください。 android:fitsSystemWindows、View.onApplyWindowInsets()、View.setOnApplyWindowInsetsListener()、Behavior.onApplyWindowInsets()...を使用します。これは難しい作業ですが、そこにあるステータスバーに頼ることはできません.Nの前には、WindowInsetsを使用してすべてを再実装する時間を取ることをお勧めします。 – natario

+0

WindowInsetsはプログラムで情報を提供するために機能しますが、遅いです。実際のインセットが何であるかを知る前に、複数の呼び出しを受け取ります。 – Justin

+0

再実装については、私はしたくありません。私は多くのビューといくつかの図書館に頼っています。彼らはすべてシステムウインドウに合ってうまくいくわけではありません。 Jelly Bean、KitKat、Marshmallowをすべてのメーカーに再実装してテストすることが最後の手段です。 – Justin

答えて

-1

あなたは、システムのUIバーを意味すると仮定すると、ステータスバーすなわち、次の操作を行います。

View decorView = getWindow().getDecorView(); 

decorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { 
@Override 
public void onSystemUiVisibilityChange(int visibility) { 
    // Note that system bars will only be "visible" if none of the 
    // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set. 
    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
     // TODO: The system bars are visible. Make any desired 
     // adjustments to your UI, such as showing the action bar or 
     // other navigational controls. 
    } else { 
     // TODO: The system bars are NOT visible. Make any desired 
     // adjustments to your UI, such as hiding the action bar or 
     // other navigational controls. 
    } 
} 

を});ドキュメントから直接である

https://developer.android.com/training/system-ui/visibility.html

+0

マルチウィンドウ環境でこれをテストしましたか?私に文脈から外れているようです。 OPがどの程度コンテンツを相殺する必要があるかを判断するのに役立つのか分かりません。 –

+0

ahemその正しい形式Googleドキュメント..それは実際にはGoogleによってすでにテストされています –

+0

マルチウィンドウモードではシステムの表示は変更されません。私はフルスクリーンでもマルチウィンドウモードでも同じ応答を得ます。 – Justin

関連する問題