web-dev-qa-db-ja.com

Android ActionBarを使用したステータスバーオーバーレイ

requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)を使用してActionBarオーバーレイを作成できることを知っています
そして画面にステータスバーを切り替えたり表示したりできます(FLAG_FULLSCREENFLAG_FORCE_NOT_FULLSCREENを切り替えることで)。
これはうまく機能します。ただし、ステータスバーを切り替えたときにレイアウトを移動したくありません。

次を使用して、ステータスバーを(透過的ではありませんが)コンテンツを「オーバーレイ」できることを知っています。

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREENWindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

これは、ActionBarを使用すると、ActionBarが半分カットオフされるという(予想される)結果を除いて、うまく機能します。基本的に、その半分はステータスバーの下にあります。

この場合、ステータスバーの高さで「アクションバーを下に移動」する方法はありますか?
最悪の場合、レイアウト内にあるカスタムビューでこれを実行できることはわかっていますが、これは実行しません(ActionBarの恩恵を受けたい)。

ありがとう!

20
ahmedre

どうやら、これはジェリービーンズで行うことができます。 googleは、APIドキュメントに2つの例を含めています。ここにリンクがあります: http://developer.Android.com/reference/Android/view/View.html#setSystemUiVisibility%28int%29

概要:ビューでsetSystemUiVisibilityを使用して、可視性を切り替えます(jellybean +の場合)。

4
ahmedre

それは完璧ではありませんが、これが私があなたが望むものを達成した方法です:

OnCreateの場合:

getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN、WindowManager.LayoutParams.FLAG_FULLSCREEN);

次に:

private void hideStatusBar() {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

}

private void showStatusBar() {
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

私はまた、次のような活動のスタイルを持っています:

 <style name="readingStyle" parent="@style/Theme.Sherlock">
     <item name="Android:windowActionBarOverlay">true</item>  
     <item name="windowActionBarOverlay">true</item>       
 </style> 

ステータスバーが表示されるとアクティビティがシフトダウンしますが、あまり目立たないと思います。

3
David Scott

このメソッドをonCreate()メソッドアクティビティに配置します。

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

参照: リンク

0
huu duy

マニフェストで成功しない理由

Android:theme="@Android:style/Theme.Black.NoTitleBar"

ステータスバーがなく、アクションバー用のスペースが多いよりも?

0
Phil