1

アプリで「没入モード」を使用したい。私はドキュメントに従っており、適切に動作しています:

 private View mDecorView;
...

     @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            super.onWindowFocusChanged(hasFocus);
            if (hasFocus) {
                mDecorView.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
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        mDecorView = getWindow().getDecorView();

    }

これにより、没入型フルスクリーン モードが有効になります。私の問題は、Trello アプリと同じ結果として、FLAG_IMMERSIVE_STICKY のみを使用したいということです。

ここに画像の説明を入力

バーは透明で、常に表示されます。情報とさまざまな組み合わせを検索しましたが、必要な結果が得られました。助けていただければ幸いです。

ありがとうございました!

4

3 に答える 3

1

ドキュメントには、onCreate メソッドでアクティビティの UI フラグを設定する必要があることも記載されています。- https://developer.android.com/training/system-ui/immersive.html

これら 2 つのメソッドを実装し、onCreate メソッドで hideSystemUI を呼び出します。

// This snippet hides the system bars.
private void hideSystemUI() {
    // Set the IMMERSIVE flag.
    // Set the content to appear under the system bars so that the content
    // doesn't resize when the system bars hide and show.
    mDecorView.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);
}

// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
    mDecorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

これにより、statusBar と navigationBar が非表示になります。ドキュメントには、ナビゲーションとステータスバーの両方を非表示にする必要があると記載されています。私にとっては、ステータスバーを非表示にするだけです。

これが役立つことを願っています。

于 2014-05-12T17:01:21.977 に答える
0

探しているフラグは次のとおりです。

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION

以下を使用して、テーマでフラグを使用することもできます。

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

残念ながら、アプリがアクション バーを使用している場合、Trello アプリのようにすぐには表示されません。Trello アプリのように見せるには、いくつかのトリック/ハックを使用する必要があります。アプリでアクション バーを使用している場合は、代わりにこのライブラリを使用して時間を節約できます*。言うまでもなく、これは API 19 以降でのみ機能します。

*個人的には、アクション バーの色を拡張するためだけに透明なシステム バーを使用することは推奨しません。システムバーの下に表示するコンテンツがある場合、または全画面表示のアクティビティがある場合にのみ使用する必要があると思います.

于 2014-02-28T19:57:07.417 に答える