diff --git a/Xamarin.Neo4j/.gitignore b/Xamarin.Neo4j/.gitignore new file mode 100644 index 0000000..a4c056d --- /dev/null +++ b/Xamarin.Neo4j/.gitignore @@ -0,0 +1,5 @@ + +# Android signing — never commit +*.jks +*.keystore +*.env diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/MainActivity.cs b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/MainActivity.cs index 4701377..b9b048b 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/MainActivity.cs +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/MainActivity.cs @@ -1,8 +1,12 @@ using Android.App; using Android.Content.PM; using Android.Content.Res; +using Android.Views; +using AndroidX.AppCompat.Widget; +using AndroidX.Core.View; using Microsoft.Maui; using Microsoft.Maui.ApplicationModel; +using AColor = Android.Graphics.Color; namespace Xamarin.Neo4j.Android { @@ -26,11 +30,39 @@ namespace Xamarin.Neo4j.Android if (IPlatformApplication.Current?.Application is App app) { var nightMode = Resources.Configuration.UiMode & UiMode.NightMask; - var theme = nightMode == UiMode.NightYes - ? AppTheme.Dark - : AppTheme.Light; + var isDark = nightMode == UiMode.NightYes; - MainThread.BeginInvokeOnMainThread(() => app.UpdateTheme(theme)); + // Status bar icon appearance: dark icons on light bg, white icons on dark bg + if (Window != null) + { + var controller = new WindowInsetsControllerCompat(Window, Window.DecorView); + controller.AppearanceLightStatusBars = !isDark; + } + + MainThread.BeginInvokeOnMainThread(() => + app.UpdateTheme(isDark ? AppTheme.Dark : AppTheme.Light)); + } + } + + public override void OnWindowFocusChanged(bool hasFocus) + { + base.OnWindowFocusChanged(hasFocus); + if (hasFocus) + TintToolbarOverflow(Window?.DecorView as ViewGroup); + } + + // MAUI creates its toolbar programmatically so theme-based tinting doesn't reach + // the overflow icon. Walk the view tree and apply the tint directly. + private static void TintToolbarOverflow(ViewGroup? parent) + { + if (parent == null) return; + for (var i = 0; i < parent.ChildCount; i++) + { + var child = parent.GetChildAt(i); + if (child is Toolbar toolbar) + toolbar.OverflowIcon?.SetTint(AColor.White); + else if (child is ViewGroup vg) + TintToolbarOverflow(vg); } } } diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Properties/AndroidManifest.xml b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Properties/AndroidManifest.xml index 0f4f52f..d142390 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Properties/AndroidManifest.xml +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Properties/AndroidManifest.xml @@ -22,5 +22,5 @@ - + diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-hdpi/appicon.png b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-hdpi/appicon.png new file mode 100644 index 0000000..9a475e1 Binary files /dev/null and b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-hdpi/appicon.png differ diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-mdpi/appicon.png b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-mdpi/appicon.png new file mode 100644 index 0000000..1e4b7c4 Binary files /dev/null and b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-mdpi/appicon.png differ diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xhdpi/appicon.png b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xhdpi/appicon.png new file mode 100644 index 0000000..96103bf Binary files /dev/null and b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xhdpi/appicon.png differ diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxhdpi/appicon.png b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxhdpi/appicon.png new file mode 100644 index 0000000..63b344b Binary files /dev/null and b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxhdpi/appicon.png differ diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxxhdpi/appicon.png b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxxhdpi/appicon.png new file mode 100644 index 0000000..a561b03 Binary files /dev/null and b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/mipmap-xxxhdpi/appicon.png differ diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/colors.xml b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/colors.xml index 04d5627..bb6b742 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/colors.xml +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/colors.xml @@ -1,8 +1,8 @@ - #FFFFFF - #31333b - #1e2026 - #31333b - #31333b + #0c0c0c + #141414 + #0c0c0c + #e2e2e2 + #141414 diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/styles.xml b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/styles.xml index 6d457a4..c2ef841 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/styles.xml +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j.Android/Resources/values/styles.xml @@ -12,25 +12,21 @@ false - - diff --git a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j/Themes/LightTheme.xaml b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j/Themes/LightTheme.xaml index 64e49af..41e7fc6 100644 --- a/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j/Themes/LightTheme.xaml +++ b/Xamarin.Neo4j/Xamarin.Neo4j/Xamarin.Neo4j/Themes/LightTheme.xaml @@ -7,13 +7,16 @@ - #e4ecf5 + #f5f5f5 + #ffebee + #c62828 + #0c0c0c #868a92 - #31333b - #e0e0e0 - #31333b - #31343B - #FFFFFF + #0c0c0c + #ffffff + #e0e0e0 + #f5f5f5 + #ffffff