我想对用户在应用程序“外部”更改的主题做出React。
Application.Current.RequestedThemeChanged += (s, a) =>
{
TLog.Info("[X][AppEvent]", $"Current App theme will be changed to '{a.RequestedTheme}'");
//Do some UI adjustments
};
根据这个文档,在我的MainActivity.cs文件中,我添加了ConfigChanges.UiMode:
[Activity(Label = "DringCat", Icon = "@mipmap/icon", Theme = "@style/MainTheme", ScreenOrientation = ScreenOrientation.Portrait, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
如果用户正在从应用程序更改主题(例如:我应用Application.Current.UserAppTheme = UserChoice
)事件被触发。但是,当用户手动更改Android顶部栏中的主题(圆圈设置)时,不会发生任何事情。所以,当他关闭顶部栏显示时,我的应用程序没有对更改做出React。我需要等待一个“OnResume”本地方法来检查系统当前主题并应用新主题。
我做错什么了吗?
我在网上找到的所有解决方案似乎都以文档结束(链接后),所以我开始认为我错过了一些东西...
1条答案
按热度按时间htzpubme1#
我发现的最简单的方法是从mainactivity.cs(Android项目端)对OntagationChanged做出React。
我的AndroidService服务触发了一个可以在编写应用行为的共享项目端侦听的事件,因此我可以更新UI。