android actionbarsherlock

android - Barra de acciones transparente: tabcolor personalizado



actionbarsherlock (9)

Aquí está mi código para la barra de acciones completamente transparente

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

Quiero crear una barra de acciones con pestañas transparentes, con #3b000000 . Algo así, pero con pestañas debajo de ActionBar:

Este es el código que estoy usando en 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>

Lo que sucede es que el ActionBar en sí muestra el color de fondo transparente, pero las pestañas son totalmente transparentes (no hay color visible).

¿Como puedo resolver esto?


Como se menciona en este artículo , el uso del siguiente tema personalizado funciona a la perfección.

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

Para aplicar un tinte de color, la respuesta de Gunnar muestra cómo.

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


Esto está funcionando bien en mi caso para hacer que ActionBar transparente.

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


Llame a setStackedBackgroundDrawable() en su ActionBar :

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

Esto produce (como un ejemplo con algunos iconos y pestañas al azar, y dos colores de fondo azulados diferentes para resaltar el efecto):

(El icono de actualización es el predeterminado, que viene con una ligera transparencia. Los otros iconos son iconos de prueba personalizados con color #FFFFFFFF, es decir, sin transparencia).


Lo hice en un proyecto y el estilo fue así:

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


Para establecer cualquier barra de acción de tema transparente como imagen de fondo o color se debe mostrar la mejor y más fácil manera de implementarlo.

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


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

valores de color / barra de acciones y color / tabbar que son transparentes


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

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

funciono bien para mi