web-dev-qa-db-ja.com

透明アクションバー:カスタムタブカラー

#3b000000を使用して、透明なタブでActionBarを作成します。このようなものですが、ActionBarの下にタブがあります:

enter image description here

これは私がstyles.xmlで使用しているコードです:

<style name="Theme.MyTheme" parent="@style/Theme.Sherlock.Light.DarkActionBar">
    <item name="Android:actionBarStyle">@style/ActionBar</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="Android:windowActionBarOverlay">true</item>
    <item name="actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="@style/Widget.Sherlock.Light.ActionBar">
    <item name="Android:background">@color/actionbar</item>
    <item name="background">@color/actionbar</item>
    <item name="Android:actionBarTabStyle">@style/ActionBarTabStyle</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>

<style name="ActionBarTabStyle" parent="@style/Widget.Sherlock.ActionBar.TabView">
    <item name="background">@color/actionbar_tabs</item>
    <item name="Android:background">@color/actionbar_tabs</item>
</style>

何が起こるかというと、ActionBar自体doesは透明な背景色を表示しますが、タブは完全に透明です(色は見えません)。

どうすれば解決できますか?

62
nhaarman

ActionBarsetStackedBackgroundDrawable()を呼び出します:

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));

これにより、いくつかのランダムなアイコンとタブ、および効果を強調するための2つの異なる青みがかった背景色の例を示します:

enter image description here

(更新アイコンはデフォルトのアイコンで、わずかに透明度が設定されています。他のアイコンは、#FFFFFFFF色のカスタムテストアイコン、つまり透明度なしです)。

138
Gunnar Karlsson

プロジェクトでこれを実行しましたが、スタイルは次のようになりました。

<style name="AppTheme" parent="Android:Theme.Holo">
    <item name="Android:windowActionBarOverlay">true</item>
    <item name="Android:actionBarStyle">@style/action_bar_theme</item>
    <item name="Android:actionMenuTextColor">#fff</item>
</style>

<style name="action_bar_theme" parent="@Android:style/Widget.Holo.ActionBar">
    <item name="Android:background">#b3000000</item>
    <item name="Android:titleTextStyle">@style/action_bar_text</item>
</style>
12
Marcio Covre

この記事 で述べたように、次のカスタムテーマを使用しても問題なく機能します。

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@Android:style/Theme.Holo">
        <item name="Android:windowActionBarOverlay">true</item>
    </style>
</resources>

色合いを適用するために、Gunnarの答えはその方法を示しています。

ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
actionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
9
Shashwat Black

ここに完全に透明なアクションバーへの私のコードがあります

<!-- Base application theme. -->
<style name="TransparentTheme" parent="Android:Theme.Holo.Light">
    <!-- Customize your theme here. -->
    <item name="Android:windowBackground">@null</item>
    <item name="Android:actionBarStyle">@style/ActionBarStyle.Transparent</item>
    <item name="Android:windowActionBarOverlay">true</item>
</style>

<style name="ActionBarStyle.Transparent" parent="Android:Widget.ActionBar">
    <item name="Android:background">@null</item>
    <item name="Android:displayOptions">showHome|showTitle</item>
    <item name="Android:titleTextStyle">@style/ActionBarStyle.Transparent.TitleTextStyle</item>
</style>

<style name="ActionBarStyle.Transparent.TitleTextStyle" parent="@Android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="Android:textColor">@Android:color/white</item>
</style>

enter image description here

8
I Love Coding
             getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);//or add in style.xml
             ActionBar actionBar = getActionBar();

             ColorDrawable newColor = new ColorDrawable(getResources().getColor(R.color.action_bar_color));//your color from res
             newColor.setAlpha(128);//from 0(0%) to 256(100%)
             getActionBar().setBackgroundDrawable(newColor);

in style.xml

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@Android:style/Theme.Holo">
        <item name="Android:windowActionBarOverlay">true</item>
    </style>
</resources>
4
NickUnuchek
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Android.graphics.Color.TRANSPARENT));

それは私のためにうまくいった

0
bong jae choe

背景画像または色として透明なテーマアクションバーを設定するには、それを実装するための最良かつ最も簡単な方法を示す必要があります。

        actionBar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(activity, Android.R.color.transparent)));


    ImageView image = new ImageView(this);
    image.setTag(R.string.decore_view);
    image.setAdjustViewBounds(true);
    image.setScaleType(ImageView.ScaleType.CENTER_CROP);
    image.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
    image.setImageResource(R.drawable.home_bg);
    ((ViewGroup)((ViewGroup)getWindow().getDecorView())).addView(image, 0);
0
vivek

ActionBarを透明にするという私の場合、これはうまく機能しています。

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
0
Aashish