查询应用的背景颜色

时间:2015-09-21 12:41:39

标签: c# xamarin xamarin.forms

我的Xamarin.Forms应用程序有两个基本的UI设计,一个用于浅色背景,一个用于深色背景。基本上,图标会根据背景颜色从白色变为黑色。我已经将这些选择近似于平台是iOS(轻)还是Android(黑暗)。但是,考虑到Android用户使用皮肤的选项,我想知道是否有办法找出手机是否真的有浅色或深色背景?

感谢。

1 个答案:

答案 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 ... 
    }