When I try to create a style as indicated by:
https://developers.google.com/cast/docs/android_sender_advanced#customize_cast_button like this:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#7788FF</item>
<item name="colorPrimaryDark">#7700FF</item>
<item name="mediaRouteTheme">#style/CustomMediaRouterTheme</item>
</style>
<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">#style/CustomMediaRouteButtonStyle</item>
</style>
<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">#CCCC00</item>
</style>
I get the following error:
Error:error: style attribute 'attr/mediaRouteTheme (aka com.*:attr/mediaRouteTheme)' not found.
What am I doing wrong?
I Used this dependency in build.gradle compile 'com.android.support:mediarouter-v7:25.3.1'
and in style.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
<item name="mediaRouteTheme">#style/CustomMediaRouterTheme</item>
</style>
<style name="CustomMediaRouterTheme" parent="Theme.MediaRouter">
<item name="mediaRouteButtonStyle">#style/CustomMediaRouteButtonStyle</item>
</style>
<style name="CustomMediaRouteButtonStyle" parent="Widget.MediaRouter.Light.MediaRouteButton">
<item name="buttonTint">#CCCC00</item>
</style>
its working fine, not getting any error. try with this gradle dependency.
From support library v26.0.0, the "buttonTint" is changed to "mediaRouteButtonTint".
Replacing "mediaRouteButtonTint" with "buttonTint" would fix the issue.
Found the following solution from: https://smartapps.egeniq.com/style-mediaroutebutton-change-chromecast-icon-color-ecc98d72abe4
Context castContext = new ContextThemeWrapper(this.getBaseContext(), android.support.v7.mediarouter.R.style.Theme_MediaRouter);
Drawable drawable = null;
TypedArray a = castContext.obtainStyledAttributes(null,
android.support.v7.mediarouter.R.styleable.MediaRouteButton, android.support.v7.mediarouter.R.attr.mediaRouteButtonStyle, 0);
drawable = a.getDrawable(
android.support.v7.mediarouter.R.styleable.MediaRouteButton_externalRouteEnabledDrawable);
a.recycle();
MediaRouteButton mrb = (MediaRouteButton)findViewById(R.id.media_route_menu_item);
DrawableCompat.setTint(drawable, 0xFFCCCCCC);
mrb.setRemoteIndicatorDrawable(drawable);
CastButtonFactory.setUpMediaRouteButton(this, mrb);
Related
I am currently making a gallery app and I want to use the full screen for displaying my images. For this I would have to use the Notch area on my Oneplus 6T as well, which I cannot get to work. Ever source I've looked at said to use windowLayoutInDisplayCutoutMode which doesn't seem to work for me and the Notch area is still blacked out and unused by the app. I have totally run out of ideas of how to fix this and cannot find any more results on the internet.
App Theme:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Raspjannis" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">#color/pastelBlue</item>
<item name="colorPrimaryVariant">#color/iconBlue</item>
<item name="colorOnPrimary">#color/black</item>
<item name="android:textColor">#color/black</item>
<item name="android:textColorPrimary">#color/black</item>
<item name="android:textColorSecondary">#color/iconBlue</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">#color/iconBlue</item>
<item name="colorSecondaryVariant">#color/pastelBlue</item>
<item name="colorOnSecondary">#color/white</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimary</item>
<!-- Customize your theme here. -->
<!-- Backgrounds Theme -->
<item name="backgroundColor">#color/pastelBlue</item>
<item name="cardBackgroundColor">#color/white</item>
<item name="cardForegroundColor">#color/white</item>
<item name="editTextBackground">#color/bright</item>
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">
shortEdges <!-- default, shortEdges, or never -->
</item>
</style>
<style name="Theme.Raspjannis.NoActionBar.splashScreenTheme" parent="Theme.Raspjannis.NoActionBar">
<item name="android:windowBackground">#drawable/splash_screen</item>
</style>
<style name="ActionBarTheme">
</style>
<style name="Theme.Raspjannis.NoActionBar" parent="Theme.Raspjannis">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.Raspjannis.NoStatusBar">
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">
shortEdges <!-- default, shortEdges, or never -->
</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">#null</item>
</style>
<style name="Theme.Raspjannis.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.Raspjannis.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<!-- This style is where you define the tint color of your overflow menu button -->
<style name="actionOverflowButtonStyle" parent="#style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">#color/dark</item>
</style>
<style name="menuItem" parent="Widget.AppCompat.TextView.SpinnerItem">
<item name="android:textColor">#color/black</item>
<item name="android:textColorPrimary">#color/black</item>
</style>
<style name="icons" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:itemBackground">#color/white</item>
<item name="android:textColor">#color/dark</item>
<item name="android:tint">#color/dark</item>
</style>
And here is the code that sets the theme and fullscreen:
public static void hideSystemUI(Activity activity) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
activity.setTheme(R.style.Theme_Raspjannis_NoStatusBar);
}
public static void showSystemUI(Activity activity) {
activity.setTheme(R.style.Theme_Raspjannis);
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
The error message is "Cannot resolve symbol '#style/AppTheme'"
Here is the 2nd problem.
You should create your own AppTheme in the values/styles.xml file, for example:
<!-- Base application 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>
I have a custom theme that I displayed for my application. However, in my main activity class I set a custom font for the action bar font.
// Make sure you find out why it appears after a whole 1 second after the app appears
SpannableString s = new SpannableString("GetDisciplined");
s.setSpan(new TypefaceSpan(this, "roboto-light.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// Update the action bar title with the TypefaceSpan instance
ActionBar actionBar = getActionBar();
actionBar.setTitle(s);
// set the action bar in this activity as the home
actionBar.setHomeButtonEnabled(true);
Upon launching the app, I want to immediately show the custom font.
I did some research and most solutions didn't work, but I am trying to now use launch a "splash screen" application theme without an action bar and then set the custom_theme with an action in my main activity class.
Kind of like this.
https://stackoverflow.com/a/12724687/3120659
But I am unsure how to do that modify my current style theme to do that.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Light_appalled" parent="#style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarItemBackground">#drawable/selectable_background_light_appalled</item>
<item name="popupMenuStyle">#style/PopupMenu.Light_appalled</item>
<item name="dropDownListViewStyle">#style/DropDownListView.Light_appalled</item>
<item name="actionBarTabStyle">#style/ActionBarTabStyle.Light_appalled</item>
<item name="actionDropDownStyle">#style/DropDownNav.Light_appalled</item>
<item name="actionBarStyle">#style/ActionBar.Solid.Light_appalled</item>
<item name="actionModeBackground">#drawable/cab_background_top_light_appalled</item>
<item name="actionModeSplitBackground">#drawable/cab_background_bottom_light_appalled</item>
<item name="actionModeCloseButtonStyle">#style/ActionButton.CloseMode.Light_appalled</item>
<!-- Light.DarkActionBar specific -->
<item name="actionBarWidgetTheme">#style/Theme.Light_appalled.Widget</item>
</style>
<style name="ActionBar.Solid.Light_appalled" parent="#style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="background">#drawable/ab_solid_light_appalled</item>
<item name="backgroundStacked">#drawable/ab_stacked_solid_light_appalled</item>
<item name="backgroundSplit">#drawable/ab_bottom_solid_light_appalled</item>
<item name="progressBarStyle">#style/ProgressBar.Light_appalled</item>
</style>
<style name="ActionBar.Transparent.Light_appalled" parent="#style/Widget.AppCompat.ActionBar">
<item name="background">#drawable/ab_transparent_light_appalled</item>
<item name="progressBarStyle">#style/ProgressBar.Light_appalled</item>
</style>
<style name="PopupMenu.Light_appalled" parent="#style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">#drawable/menu_dropdown_panel_light_appalled</item>
</style>
<style name="DropDownListView.Light_appalled" parent="#style/Widget.AppCompat.ListView.DropDown">
<item name="android:listSelector">#drawable/selectable_background_light_appalled</item>
</style>
<style name="ActionBarTabStyle.Light_appalled" parent="#style/Widget.AppCompat.ActionBar.TabView">
<item name="android:background">#drawable/tab_indicator_ab_light_appalled</item>
</style>
<style name="DropDownNav.Light_appalled" parent="#style/Widget.AppCompat.Spinner.DropDown.ActionBar">
<item name="android:background">#drawable/spinner_background_ab_light_appalled</item>
<item name="android:popupBackground">#drawable/menu_dropdown_panel_light_appalled</item>
<item name="android:dropDownSelector">#drawable/selectable_background_light_appalled</item>
</style>
<style name="ProgressBar.Light_appalled" parent="#style/Widget.AppCompat.ProgressBar.Horizontal">
<item name="android:progressDrawable">#drawable/progress_horizontal_light_appalled</item>
</style>
<style name="ActionButton.CloseMode.Light_appalled" parent="#style/Widget.AppCompat.ActionButton.CloseMode">
<item name="android:background">#drawable/btn_cab_done_light_appalled</item>
</style>
<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="Theme.Light_appalled.Widget" parent="#style/Theme.AppCompat">
<item name="popupMenuStyle">#style/PopupMenu.Light_appalled</item>
<item name="dropDownListViewStyle">#style/DropDownListView.Light_appalled</item>
</style>
</resources>
Unfortunately
<item name="android:windowNoTitle">true</item>
did not work, so I am trying to figure out how to do it.
I'm using in my style.xml as main app theme
<style name="AppTheme" parent="Theme.AppCompat.Light">
And all AlertDialogs using same white/blue colors. But i have Activities which working as Dialog parent="android:Theme.Dialog" and this box use dark theme. How could I change it to AppCompat.Light theme?
I tryed Theme.AppCompat.Light.Dialog but as you know it doesn't working well.
Thanks.
You can use this theme:
<style name="AppTheme" parent="android:Theme.DeviceDefault.Light.Dialog">
Or this:
<style name="AppBaseTheme" parent="#style/Theme.AppCompat.Light">
<!-- API 14 theme customizations can go here. -->
</style>
<style name="MyAppCompatDialogTheme" parent="AppBaseTheme">
<item name="android:windowIsFloating">false</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowSoftInputMode">stateAlwaysHidden</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
source last code
I used this generator to create a custom theme for my app:
http://jgilfelt.github.io/android-actionbarstylegenerator/
But there is one thing that i want to change, that this generator does not support:
The textcolor of the actionbar.
I tried doing this manually with this code:
<resources>
<style name="Theme.Bessel" parent="#android:style/Theme.Holo.Light">
<item name="android:titleTextStyle">#style/MyTextAppearance</item>
</style>
<style name="MyTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">#F8F8FF</item>
</style>
</resources>
But the textcolor of my actionbar remains unchanged. Any tips?
Update:
<resources>
<style name="Theme.Bessel" parent="#android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">#style/Your.ActionBar</item>
</style>
<style name="Your.ActionBar" parent="#android:style/Widget.Holo.Light.ActionBar.Solid">
<item name="android:background">#drawable/ab_background_textured_bessel</item>
<item name="android:backgroundStacked">#drawable/ab_stacked_solid_bessel</item>
<item name="android:backgroundSplit">#drawable/ab_background_textured_bessel</item>
<item name="android:progressBarStyle">#style/ProgressBar.Bessel</item>
<item name="android:titleTextStyle">#style/MyTextAppearance</item>
</style>
<style name="MyTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">#F8F8FF</item>
</style>
</resources>
You need to be applying android:titleTextStyle to a style that is inherent of Widget.ActionBar. So, it looks like in your case that would be Widget.Holo.Light.ActionBar.
<style name="Your.ActionBar" parent="#android:style/Widget.Holo.Light.ActionBar">
<item name="android:titleTextStyle">#style/MyTextAppearance</item>
</style>
Then apply your ActionBar style in your root theme using android:actionBarStyle.
<style name="Theme.Bessel" parent="#android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">#style/Your.ActionBar</item>
</style>
To change the tab text color, you need a theme that inherits Widget.ActionBar.TabText, in your case that looks like it'll be Widget.Holo.Light.ActionBar.TabText. Then to apply the style use android:actionBarTabTextStyle in your root theme.
<style name="Theme.Bessel" parent="#android:style/Theme.Holo.Light">
<item name="android:actionBarTabTextStyle">#style/Your.Widget.ActionBar.TabText</item>
</style>
<style name="Your.Widget.ActionBar.TabText" parent="#android:style/Widget.Holo.Light.ActionBar.TabText">
<item name="android:textColor">#F8F8FF</item>
</style>