Я хочу создать ActionBar с прозрачными вкладками с #3b000000
. Что-то вроде этого, но с вкладками ниже 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 показывает прозрачный цвет фона, но вкладки полностью прозрачны (цвет не отображается).
Как я могу это решить?
Ответ 1
Вызовите setStackedBackgroundDrawable()
на 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")));
Это дает (как пример с некоторыми случайными значками и вкладками и двумя разными синеватыми цветами фона, чтобы выделить эффект):
![enter image description here]()
(Значок обновления является стандартным, который имеет небольшую прозрачность. Другие значки - это пользовательские тестовые значки с цветом #FFFFFFFF, то есть без прозрачности).
Ответ 2
Я сделал это в проекте, и стиль был таким:
<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>
Ответ 3
Как упоминалось в в этой статье, использование следующей пользовательской темы работает безупречно.
<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")));
Ответ 4
Вот мой код для полностью прозрачного 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>
![enter image description here]()
Ответ 5
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>
Ответ 6
Чтобы установить любую панель действий темы прозрачно, поскольку фоновое изображение или цвет должны быть показаны наилучшим и легким способом его реализации.
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);
Ответ 7
ActionBar actionBar = getSupportActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
это сработало хорошо для меня
Ответ 8
Это отлично работает на моем примере, чтобы сделать ActionBar
прозрачным.
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));
getSupportActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#550000ff")));
Ответ 9
<!-- 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>
цвет/строка действия и цвета/цвета вкладки, прозрачные