透明操作栏:自定义tabcolor

我想创build一个带有#3b000000透明标签的ActionBar。 就像这样,但是在ActionBar下面有一些标签:

在这里输入图像说明

这是我在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本身确实显示透明backgroundcolor,但标签是完全透明的(没有颜色可见)。

我该如何解决这个问题?

  • 如何在ActionBar内显示动作图标和标题?
  • 无法从ActionProvider投射到ShareActionProvider
  • 如何防止onNavigationItem在活动启动时select发生火灾?
  • 新的Facebook API 3.0。 和ActionBarSherlock兼容性
  • TabListener,ActionBarSherlock片段和ListFragment,PageAdapter的混合? 一团糟
  • ActionBarSherlock - 选项卡出现在自定义视图ABOVE操作栏
  • 填充操作栏“向上”指示图像
  • 我可以使用styles.xml设置操作栏的主页图标吗?
  • 在您的ActionBar上调用setStackedBackgroundDrawable()

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

    这产生了(作为一个例子,一些随机的图标和标签,以及两种不同的蓝色背景颜色来突出显示效果):

    在这里输入图像说明

    (刷新图标是默认的图标,只有一点点的透明度,其他图标是自定义testing图标,颜色为#FFFFFFFF,也就是没有透明度)。

    我已经做了一个项目,风格是这样的:

     <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> 

    正如本文所提到的,使用以下自定义主题完美无瑕。

     <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"))); 

    这是我完全透明的Actionbar的代码

     <!-- 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> 

    在这里输入图像说明

      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); 

    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> 

    要将任何主题操作栏设置为透明的背景图片或颜色,应该显示为实现它的最佳最简单的方法。

      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); 
     ActionBar actionBar = getSupportActionBar(); actionBar.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

    它为我工作得很好

    对于使ActionBar透明的情况,这工作正常。

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

     <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBar</item> <item name="android:windowActionBarOverlay">true</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item> <item name="android:background">@color/actionbar</item> <item name="android:backgroundStacked">@color/tabbar</item> </style> 

    颜色/操作栏和颜色/标签栏颜色值是透明的