8

ViewPagerを使用して異なるフラグメント間をスクロールしています。2つの異なるメニューリソースを使用する2種類のフラグメントがあります。必要に応じてこれらのリソースを切り替えるためにメニューを無効にしています。それはすべてかなりうまく機能していますが、メニューはアニメーションなしで「再描画」されます。

個々のMenuItemをいじる必要がないように、新しいメニューがロードされている間はActionBarを一時的に非表示にして、それが完了すると表示されることを望んでいました。これも期待どおりに機能していますが、アクションバーを切り替えるとアクティビティのサイズが変更されます。

これを防ぐ方法、またはメニューリソース間の醜い遷移を隠す方法はありますか?

4

1 に答える 1

17

問題のメニュー部分はよくわかりませんでしたが、ActionBar が表示または非表示になったときにアクティビティのサイズが変更されないようにする簡単な解決策があります。

ActionBar にオーバーレイ モードでそれ自体を描画するように指示できます。つまり、実際にアクティビティのレイアウトの一部になるのではなく、アクティビティの上にフロートします。android:windowActionBarOverlayテーマで使用するか、Window.FEATURE_ACTION_BAR_OVERLAYコードのフラグを使用します。

この機能はactionBarSize、レイアウトの最初のビューの正しいオフセットを指定する定数と組み合わせて使用​​することをお勧めします。このように、コンテンツは引き続き ActionBar の下に表示されますが、ActionBar 自体はオーバーレイであるため、非表示/表示時にアクティビティのサイズは変更されません。

<SomeView
    ...
    android:layout_marginTop="?android:attr/actionBarSize" />

詳細については、ドキュメントを参照してください。

于 2012-07-15T19:48:30.813 に答える