私はインターウェブを精査してきました(例Androidドキュメンテーション、ここでの回答など)。 Google Music および YouTube (リンクは画像の例です)のものですか?
ビデオコンテンツをフルスクリーンにし、組み込みのUIコンポーネントの利点を活用しながら、アクションバーによる制約/プッシュダウンを行わないようにします。もちろん、完全にカスタムビューを使用できますが、可能であればActionBarを活用します。
マニフェスト
<activity
Android:name="videoplayer"
Android:theme="@Android:style/Theme.Holo"
Android:launchMode="singleTop"
Android:configChanges="keyboardHidden|orientation"/>
アクティビティ
// Setup action bar
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
View customActionBarView = getLayoutInflater().inflate(R.layout.player_custom_action_bar, null);
actionBar.setCustomView(customActionBarView,
new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
R.dimen.action_bar_height));
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
メニュー
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:id="@+id/button1"
Android:icon="@drawable/button1"
Android:showAsAction="always"/>
<item
Android:id="@+id/button2"
Android:icon="@drawable/button2"
Android:showAsAction="always"/>
</menu>
カスタムアクションバービュー
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/custom_action_bar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal"
Android:gravity="center"
Android:background="@color/TranslucentBlack">
<!--Home icon with arrow-->
<ImageView
Android:id="@+id/home"
Android:src="@drawable/home"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"/>
<!--Another image-->
<ImageView
Android:id="@+id/image"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:visibility="visible"/>
<!--Text if no image-->
<TextView
Android:id="@+id/text"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:gravity="center_vertical"
Android:visibility="gone"/>
<!--Title-->
<TextView
Android:id="@+id/title"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:paddingLeft="20dp"
Android:gravity="center_vertical"/>
</LinearLayout>
アクティビティをフルスクリーンにしたいがアクションバーを表示したいが、アルファを使用する場合は、アクティビティのonCreate()
でアクションバーのoverlaymodeをリクエストする必要があります:
_getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
//getWindow().requestFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY); << Use this for API 7+ (v7 support library)
_
次に、aftersetContentView(..)
を呼び出します(setContentView(..)
もコンテンツの設定の横にあるアクションバーを初期化するため)、アクションバーに描画可能な背景を設定できます。
_getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));
_
res/drawableにアルファを入れた形状のドロアブルにすることができます:
_<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle">
<solid Android:color="#BB000000" />
</shape>
_
ColorDrawable
を作成して、これを完全にプログラムで行うこともできます。
_getActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(128, 0, 0, 0)));
_
そうでない場合はもちろん、アクションバーを完全に隠すことができます。その場合、マニフェストのアクティビティにカスタムテーマを設定できます。
_@Android:style/Theme.NoTitleBar.Fullscreen
_
または呼び出してプログラムで
_getActionBar().hide();
_
正解に加えて、AppcomatActivityを使用している場合は、代わりにsupportRequestWindowFeatureを呼び出します
古いバージョン:getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
使用したい:
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
super.onCreate(savedInstanceState);
}
Windowフラグ_FEATURE_ACTION_BAR_OVERLAY
_を使用してこれを行うことができるはずです。
アクティビティでsetContentView()
を呼び出す前に、
呼び出し:
_getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
_
そして、ウィンドウを押し下げる代わりに、オーバーレイされたActionBar
を使用します。
上記のコードは、アクションバーを作成するために絶対に正しいです。
の代わりに
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(128, 0, 0, 0)))
つかいます
getActionBar().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
これにより、アクションバーが完全に透明になります。
これが私がこれをどのように動作させるかです:
1)プログラムによるアクションバーオーバーレイのリクエスト
_ getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
_
「setContentView(R.layout.my_layout)」を呼び出す前に、この「requestFeature()」をアクティビティ「onCreate()」メソッドから要求する必要があります。
2)setBackgroundDrawable()
を呼び出してアクションバーの色を設定します:
_getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00212121")) );
_
このメソッドには、ドロアブルへの参照が必要です。または、カラーパーサーを使用して16進数のカラー値を解析することもできます(最初の2桁は、#00から#FFで始まるアルファチャネルに使用されます)
私はactionBarSherlok getSupportActionBar()
を使用していますが、これはどのアクションバーでも動作するはずです。
これがまだ機能しない場合は、テーマスタイルに追加してみてください
_<item name="windowActionBarOverlay">true</item>
<item name="Android:actionBarStyle">@style/ActionBar.Transparent.Example</item>
<item name="Android:windowActionBarOverlay">true</item>
_
私はあなたとこれを達成するために取ったステップを共有したいだけです。
1)アクティビティのOnCreateで、
getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
それから
getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
これは、setContentViewの前に行われます。
2)setContentViewの後、次のことができます
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(0, 100, 181, 246)));
アルファ値0は、完全に透明であることを意味します。