问题描述
正如我在标题中所写,我使用 Microsoft Xamarin.Forms.Maps 块在我的应用程序中显示地图。 首先,我从 Xamarin.Forms.GoogleMaps 开始,但是当我看到我无法自定义 InfoWindows(当我触摸一个引脚时)时,我必须返回并开始使用 Xamarin.Forms.Maps。 唯一的问题是我必须对地图或类似的东西应用“灰色样式”。而且我找不到任何链接或指南来执行此操作。 好像Customrender不能修改样式和颜色。
请问,有人可以帮我吗?任何链接、文档或示例?
解决方法
如果您指的是 Dark Mode
,您可以创建自定义渲染器来实现这一点。
iOS
在 OverrideUserInterfaceStyle
中设置 OnElementChanged
。
[assembly: ExportRenderer(typeof(Map),typeof(MyRenderer))]
namespace FormsApp.iOS
{
class MyRenderer : MapRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<View> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
var nativeMap = Control as MKMapView;
nativeMap.OverrideUserInterfaceStyle = UIUserInterfaceStyle.Dark;
}
}
}
}
安卓
在资源中创建暗模式文件并在mapStyle
中设置OnElementChanged
。
[assembly: ExportRenderer(typeof(Map),typeof(MyMapRenderer))]
namespace FormsApp.Droid
{
class MyMapRenderer : MapRenderer
{
Context _context;
public MyMapRenderer(Context context) : base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if(e.NewElement != null)
{
NativeMap.SetMapStyle(MapStyleOptions.LoadRawResourceStyle(this.Context,Resource.Raw.map_style_night));
}
}
}
}
参考
https://forums.xamarin.com/discussion/comment/429548/#Comment_429548。