2012-10-30 3 views
13

実行時にactionbarモードを設定して、コンテンツを実行時にオーバーレイまたはオーバーレイしないようにするにはどうすればよいですか?私はgetWindow().requestFeature(Window.FEATURE_ACTIONBAR_OVERLAY)を使ってみましたが、setContentView()を呼び出した後にモードを設定することはできません。私はそれがYoutubeアプリで行われているのを見ているので、これを行うことができます。Androidで実行時にアクションバーオーバーレイモードを設定する

+0

こんにちはSowrabh、解決策は見つかりましたか? – Wayne

+1

運がよろしいですか?私ができることは、常にActionbarオーバーレイモードを 'Window.FEATURE_ACTIONBAR_OVERLAY'に設定し、必要に応じてビュー全体のY座標をアクションバーの下部に設定することです。しかし、非常にきれいな解決策ではありません –

+1

ありがとう、それは回避策かもしれません:D。しかし、私たちがYoutubeのやり方を知っているといいと思う。D – Wayne

答えて

5

必ずしも正確なものではありませんが、適切な解決策の1つは、コンテンツの上部にActionBarと同じ高さのスペーサービューを作成することです(android:layout_height = "?android:actionBarSize" )。オーバーレイモードを有効にする場合は、スペーサーの可視性をView.GONEに設定し、無効にする場合はView.VISIBLEに設定します。

+0

これは間違いなく有効な回避策です。 ActionBarのオーバーレイはスタイルであり、表示する前に設定しなければならず、実行時に変更されないため、回避策が必要になります。この回避策の問題点は、アクションバーの高さを取得することは、回答に記載されているように単純ではないことです。「スタックされた」アクションバー(アクションバーのタブと思うので、getActionBar()。getHeightアンドロイド:actionBarSizeには含まれていません。また、積み重ねられているかどうかをAndroidが判断するために使用するすべての変数がわからないため: – xbakesx

+0

ありがとうございました。 – user3819810

関連する問題