SnackBar using ActionBar Theme? - android

I having this weird behavior with the styling of ActionBar and Snackbar.
I have below theme for AppTheme
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorWhite</item>
<item name="colorPrimaryDark">#color/colorWhiteDark</item>
<item name="colorAccent">#color/colorGreen</item>
</style>
So, I am having white theme. And my SnackBar looks like this
But, whenever I add custom actionBarTheme, like
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorWhite</item>
<item name="colorPrimaryDark">#color/colorWhiteDark</item>
<item name="colorAccent">#color/colorGreen</item>
<item name="actionBarTheme">#style/ActionbarTheme</item>
</style>
<style name="ActionbarTheme">
<item name="android:textColor">#color/colorBlack</item>
<item name="android:background">#color/colorWhite</item>
</style>
My SnackBar looks like this
Why it is causing this behavior and how to fix it?

Since you are applying following style in your parent
<style name="ActionbarTheme">
<item name="android:textColor">#color/colorBlack</item>
<item name="android:background">#color/colorWhite</item>
</style>
Your text color is black and your background is white.
EDIT:
To fix, you need to set textcolor as white and background black:
<style name="ActionbarTheme">
<item name="android:textColor">#color/colorWhite</item>
<item name="android:background">#color/colorBlack</item>
</style>

change item name background to colorPrimary
<style name="ActionbarTheme">
<item name="android:textColor">#color/colorBlack</item>
<item name="colorPrimary">#color/colorWhite</item>
</style>

Related

ActionBar title disappears when I change the style

I'm trying change my ActionBar style, changing the background and title color. The background is ok, but when I try change the titleTextStyle the title that I defined on manifest disappear.
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/primary</item>
<item name="colorPrimaryDark">#color/primary_dark</item>
<item name="colorAccent">#color/accent</item>
<item name="android:actionBarStyle">#style/AppTheme.ActionBarStyle</item>
<item name="actionBarStyle">#style/AppTheme.ActionBarStyle</item>
</style>
<style name="AppTheme.ActionBarStyle" parent="#android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:background">#color/dark</item>
<item name="background">#color/dark</item>
<item name="android:textColor">#color/icons</item>
<item name="android:displayOptions">showHome|showTitle|useLogo</item>
<item name="android:titleTextStyle">#style/AppTheme.ActionBar.TitleStyle</item>
<item name="titleTextStyle">#style/AppTheme.ActionBar.TitleStyle</item>
</style>
<style name="AppTheme.ActionBar.TitleStyle" parent="#android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">#color/icons</item>
</style>
I have another doubt about the color of default icons. For example, I'm using NavigationDrawer and would like to change the color of your icon
That worked for me:
getSupportActionBar().setDisplayShowTitleEnabled(true);

What is wrong with my Android style attributes, actionbar title hidden or no color?

I'm trying to customize ActionBar using styles.xml on KITKAT and older versions.
This is as far I got it, but missing actionbar title, no color inserted properly, height or what is wrong?
Here is my styles.xml
<style name="Theme.MyApp" parent="AppTheme">
<item name="actionBarStyle">#style/Theme.MyApp.ActionBar</item>
<item name="android:actionBarStyle">#style/Theme.MyApp.ActionBar</item>
</style>
<style name="Theme.MyApp.ActionBar" parent="style/Theme.MyApp">
<item name="elevation">4dp</item>
<item name="android:height">56dp</item>
<item name="android:textColor">#color/white</item>
<item name="android:icon">#drawable/icon_placeholder_compat</item>
<item name="android:background">#color/blue</item>
<item name="android:titleTextStyle">#style/Theme.MyApp.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">#style/Theme.MyApp.ActionBar.TitleTextStyle</item>
</style>
<style name="Theme.MyApp.ActionBar.TitleTextStyle" parent="style/Theme.MyApp.ActionBar">
<item name="android:textColor">#color/white</item>
<item name="android:color">#color/white</item>
</style>
For change color of action bar and status bar:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/action_bar_color</item>
<item name="colorPrimaryDark">#color/status_bar_color</item>
</style>

can we set actionbar height manually in android theme.light

I am using "Theme.Light" theme for my android project and while setting up a navigation drawer how can i set actionbar size(height).
I used the below code and i got an error..
<style name="Theme.Light.ActionBar" parent="#android:style/Theme.Light">
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
<item name="actionBarSize">36dip</item>
<item name="android:windowActionBarOverlay">true</item>
</style>
can you please reply to my problem as soon as possible and thank you.
Use height attribute,for actionBarHeight
<item name="android:height">#dimen/bar_height</item>
you have to create style like this:
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="colorPrimary">#color/primary</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="colorPrimaryDark">#color/primary_dark</item>
<!-- theme UI controls like checkboxes and text fields -->
<!-- native widgets will now be "tinted" with accent color -->
<item name="colorAccent">#color/accent</item>
<!--Action bar style-->
<item name="android:actionBarStyle">#style/AppTheme.ActionBar</item>
<item name="actionBarStyle">#style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">#style/AppTheme.ActionBar.TitleText</item>
<item name="android:titleTextStyle">#style/AppTheme.ActionBar.TitleText</item>
<item name="android:height">#dimen/bar_height</item>
</style>
<style name="AppTheme.ActionBar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">#dimen/bar_text_size</item>
<item name="android:textColor">#color/bar_text_color</item>
</style>
you have to try below code :
<resources>
<style name="Theme.FixedSize" parent="#android:style/Theme.Holo.Light.DarkActionBar">
<item name="actionBarSize">48dip</item>
<item name="android:actionBarSize">48dip</item>
</style>
</resources>
If you are using AppCompat, you can set the "actionBarSize" attribute in your theme (which must inherit from Theme.AppCompat.x). You can also use a Toolbar in your layout and set its layout_height to the desired value.

Customizing the 'back' arrow color in Actionmode with appcompat-v7

My main theme is based on Theme.AppCompat.Light as follows:
<style name="core" parent="Theme.AppCompat.Light" >
<!-- Material, Yo!-->
<item name="colorPrimary">#color/theme_main_color</item>
<item name="colorPrimaryDark">#color/deep_purple</item>
<item name="colorAccent">#color/theme_accent_color</item>
<item name="android:navigationBarColor" tools:ignore="NewApi">?attr/colorPrimary</item>
<!-- Toolbar -->
<item name="theme">#style/my_toolbar_theme</item>
<item name="drawerArrowStyle">#style/my_drawer_arrow</item>
<!-- Actionbar -->
<item name="android:actionBarDivider">#null</item>
<item name="android:actionBarTabStyle">#null</item>
<item name="android:actionBarTabBarStyle">#null</item>
<!-- Contextual Actionbar -->
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">?attr/colorAccent</item>
<item name="actionModeStyle">#style/my_actionmode_style</item>
</style>
<style name="my_drawer_arrow" parent="Widget.AppCompat.DrawerArrowToggle" >
<item name="spinBars">true</item>
<item name="color">#color/theme_accent_color</item>
</style>
<style name="my_toolbar_style">
<item name="android:id">#id/toolbar</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:background">?attr/colorPrimary</item>
<item name="android:elevation" tools:ignore="NewApi">5dp</item>
</style>
<style name="my_actionmode_style" parent="Widget.AppCompat.Light.ActionMode.Inverse" >
<item name="titleTextStyle">#style/my_actionmode_title_style</item>
<item name="subtitleTextStyle">#style/my_actionmode_subtitle_style</item>
</style>
<style name="my_toolbar_style.gradient">
<item name="android:background">#drawable/ab_gradient_bg</item>
</style>
<style name="my_toolbar_theme" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >
<!-- Customize the toolbar here -->
</style>
<style name="my_actionmode_title_style" parent="TextAppearance.AppCompat.Widget.ActionMode.Title">
<item name="android:textColor">#color/std_white</item>
</style>
<style name="my_actionmode_subtitle_style" parent="TextAppearance.AppCompat.Widget.ActionMode.Subtitle">
<item name="android:textColor">#android:color/white</item>
</style>
In actionmode I'd like to see white title/subtitles with a white back arrow. I've been able to set the title and subtitle text colors to white, but the back arrow remains black. This issue only occurs in places where I'm using the SupportActionbar and not the toolbar (the back arrow in toolbar is white).
This is my toolbar in ActionMode.
This is the actionbar in ActionMode. Same phone, same app, same themes, just a different activity.
I can't find anything in the themes that would determine this color. According to the source, the icon is #drawable/abc_ic_ab_back_mtrl_am_alpha, which is white, so something must be tinting it. Where does this black-ish color come from?
To customize this using AppCompat:
In your app level theme:
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="actionModeCloseButtonStyle">#style/myclosebutton</item>
</style>
In the CloseButtonStyle:
<style name="myclosebutton" parent="Widget.AppCompat.Light.ActionButton.CloseMode">
<item name="android:tint">#ff0</item> <!-- whatever color -->
</style>
I had the same problem and I have solved it by explicitly declaring the icon I want to use in the style:
<item name="android:actionModeCloseDrawable">#drawable/ab_back</item>
Where #drawable/ab_back is provided by me.
This is not ideal, as I would like to correctly set the style and let it work inheriting the right colours from the parent theme, without the need of declaring so specific details. But, I feel everything around the ActionBar, SupportActionBar, SherlockActionBar, ActionBarActivity, FragmentActivityWithASherlockSupportActionToolbar is SO broken and bad engineered that I'm happy to solve it with a workaround.
Try "colorControlNormal" Property Like given Below in your "NoActionBar Theme"
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="colorControlNormal">#android:color/white</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
I have best answer for this
Spannable text = new SpannableString( mode.getTitle());
text.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorPrimaryDark)),
0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mode.setTitle(text);

Change Color of Actionbar in Android

I am trying to change the background color of actionbar in my App but this is showing different on my app. Instead of coloring the actionbar the whole activity is color.
I am not sure why this is happening? I just want the main actionbar and settings actionbar colored.
Please check the screenshot.
Main Activity Map:
Preference Settings:
I also have transparent Actionbar with UP Navigation enabled for all my sub activities other than the main activity and preference settings activity.
I am not sure why it is showing like the above:
Here is style.xml (values-v14):
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:background">#FF5050</item>
</style>
<style name="dialogtheme" parent="#android:style/Theme.Holo.Light.DarkActionBar"></style>
<!-- Transparent ActionBar Style -->
<style name="AppTheme.Light.ActionBar.Transparent" parent="#android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">#android:color/transparent</item>
</style>
<!-- Activity Theme with transparent ActionBar -->
<style name="AppTheme.TransparentActionBar.Light" parent="#style/AppBaseTheme">
<item name="android:actionBarStyle">#style/AppTheme.Light.ActionBar.Transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">#android:color/transparent</item>
<item name="android:actionBarTabTextStyle">#style/ActionBarTabTextStyle.Tabtheme</item>
<item name="android:actionBarDivider">#drawable/verticallinefordivder</item>
<item name="android:actionBarTabStyle">#style/ActionBarTabStyle.MapsLocation</item>
</style>
<style name="simpledialog" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
<style name="ActionBarTabTextStyle.Tabtheme" parent="#style/AppBaseTheme">
<item name="android:textSize">18sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">#android:color/black</item>
</style>
<style name="ActionBarTabStyle.MapsLocations" parent="#android:style/Widget.Holo.Light.ActionBar.TabView">
<item name="android:background">#drawable/tab_indicator</item>
</style>
<style name="myPreferenceTheme" parent="#style/AppBaseTheme">
<item name="android:textColor">#color/blue</item>
</style>
<style name="Widget.ActionButton" parent="#style/AppBaseTheme">
<item name="android:background">?android:attr/actionBarItemBackground</item>
<item name="android:paddingLeft">12dip</item>
<item name="android:paddingRight">12dip</item>
<item name="android:minWidth">56dip</item>
<item name="android:minHeight">?android:attr/actionBarSize</item>
</style>
</resources>
A little change and you action bar will be red:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">#style/AppTheme.Light.ActionBar</item>
</style>
<style name="dialogtheme" parent="#android:style/Theme.Holo.Light.DarkActionBar"></style>
<!-- Transparent ActionBar Style -->
<style name="AppTheme.Light.ActionBar" parent="#android:style/Widget.Holo.ActionBar">
<item name="android:background">#FF5050</item>
</style>
I have changed item in AppBaseTheme & AppTheme.Light.ActionBar .
Now you are good to go. let me know if it works however working at my end :P
You can try set custom view in action bar.
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(you_custom_layout);
I know this is not right answer to this question but if you want to edit your ActionBar, you can use this online Android Action Bar Style Generator.
At least you can create a style and check yours to find differences and learn how to edit your ActionBar.

Categories

Resources