54

私は、かなり些細な質問だと思ったものへの答えを求めて、インターウェブ(Androidのドキュメント、ここでの回答など)を精査してきました。Googleミュージック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>
4

7 に答える 7

102

アクティビティをフルスクリーンにし、アクションバーを表示したいが、アルファを使用する場合はonCreate()、アクティビティのアクションバーのオーバーレイモードをリクエストする必要があります。

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

//getWindow().requestFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY); << Use this for API 7+ (v7 support library) 

次に、呼び出した後setContentView(..)setContentView(..)コンテンツの設定の横にあるアクションバーも初期化するため)、アクションバーに描画可能な背景を設定できます。

getActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar_bg));

これは、解像度/描画可能にアルファを入れて描画可能な形状にすることができます。

<?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();
于 2011-07-19T15:06:14.017 に答える
13

正解に加えて、AppcomatActivityを使用している場合は、代わりにsupportRequestWindowFeatureを呼び出します

古いバージョン: getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

使用したい:

@Override
protected void onCreate(Bundle savedInstanceState) {
    supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    super.onCreate(savedInstanceState);
}
于 2015-06-26T15:26:14.690 に答える
9

Windowフラグを使用してこれを実行できるはずだと思いますFEATURE_ACTION_BAR_OVERLAY

setContentView()アクティビティを呼び出す前に、

電話:

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

ActionBarそしてそれはあなたの窓を押し下げる代わりにオーバーレイを使用します。

于 2011-07-19T15:14:40.350 に答える
6

上記のコードは、アクションバーを作成するために絶対的に正しいです。

それ以外の

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(128, 0, 0, 0)))

使用する

getActionBar().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

このようにして、アクションバーが完全に透明に見えるようになります。

于 2014-10-16T17:30:36.517 に答える
5

これが私がこれを機能させる方法です:

1)を呼び出すことにより、プログラムでアクションバーオーバーレイを要求します

       getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

この'requestFeature()'は、'setContentView(R.layout.my_layout)'を呼び出す前に、アクティビティ' 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>
于 2013-09-21T18:56:27.520 に答える
0

これを達成するために私が取ったステップをあなたと共有したいと思います:

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は、完全に透過的であることを意味します。

于 2018-09-05T14:37:00.643 に答える
0

ステップI:まず、styles.xmlでテーマを設定します

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

ステップII:次に、AndroidManifest.xmlでのアクティビティにテーマを設定する必要があります

    <activity android:name=".activity.YourActivity"
        android:theme="@style/AppTheme.NoActionBar"/>

ステップIII:さて、アクティビティレイアウトファイルセットで次のように設定します。

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/agri_bg_login">
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tool_bar"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>
    </RelativeLayout>

最後に、アクティビティに設定できます。

    Toolbar tool_bar = findViewById(R.id.tool_bar);
    setSupportActionbar(tool_bar);
    getSupportActionbar().setTitle("Your actionbar title");
    getSupportActionbar().setDisplayHomeAsUpEnabled(true);

以上です。透明なアクションバーで結果が得られます。また、引き出しのトグルボタンとメニューを表示したい場合は、ここに表示されます。

于 2020-04-26T08:34:54.977 に答える