我的Xamarin.Forms应用程序有两个基本的UI设计,一个用于浅色背景,一个用于深色背景。基本上,图标会根据背景颜色从白色变为黑色。我已经将这些选择近似于平台是iOS(轻)还是Android(黑暗)。但是,考虑到Android用户使用皮肤的选项,我想知道是否有办法找出手机是否真的有浅色或深色背景?
感谢。
答案 0 :(得分:0)
您必须为其创建特定于平台的依赖注入服务(https://developer.xamarin.com/videos/cross-platform/accessing-native-features-through-the-dependency-service/)。
在Android上使用此功能:https://stackoverflow.com/a/9537629/5064986
获取背景颜色:
const int TYPE_FIRST_COLOR_INT = 28;
const int TYPE_LAST_COLOR_INT = 31;
TypedValue a = new TypedValue();
Theme.ResolveAttribute(Android.Resource.Attribute.WindowBackground, a, true);
if (a.Type >= TYPE_FIRST_COLOR_INT && a.Type <= TYPE_LAST_COLOR_INT) {
// windowBackground is a color
int color = a.Data; // int representation of background color
} else {
// windowBackground is not a color, probably a drawable
Drawable d = Resources.GetDrawable(a.ResourceId);
// do something with it ...
}