20

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

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

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

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

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

ありがとう!

4

4 に答える 4

4

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

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

于 2012-08-07T09:00:04.470 に答える
3

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

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> 

ステータス バーが表示されるとアクティビティが下に移動しますが、あまり目立たないと思います。

于 2012-05-29T13:18:28.167 に答える
0

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

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

参照:リンク

于 2016-02-17T06:57:07.297 に答える
0

なぜマニフェストに出さないのか

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

ステータスバーがなく、アクションバー用のスペースがありませんか??

于 2012-05-04T07:11:49.150 に答える