Xamarin.Form 调用原生控件的方法

1. 将原生控件jar包转为dll  

 

2. 将Andriod项目引入转换之后的dll文件

3. Xamarin.Form项目创建一个Page,加入传播参数的静态字段

 public static BindableProperty PinsProperty =
                     BindableProperty.Create<MapPage, IEnumerable>(p => p.Pins, default(IEnumerable));

        public IEnumerable Pins
        {
            get
            {
                return (IEnumerable)GetValue(PinsProperty);
            }
            set
            {
                this.SetValue(PinsProperty, value);
            }
        }

4. Xamarin.Android项目中创建一个ViewRender,继承PageRenderer。重写OnElementChanged(ElementChangedEventArgs<Page> e)方法。

 protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
        {
            base.OnElementChanged(e);
            if (this.Context == null) return;
            mapPage = e.NewElement as MapPage;

            layout1 = new LinearLayout(this.Context);
            this.AddView(layout1);
            mapView = new MapView(this.Context);
            mapView.Map.MyLocationEnabled = true;

            #region 比例
            MapStatus.Builder builder = new MapStatus.Builder();
            builder.Zoom(12.0f);
            mapView.Map.SetMapStatus(MapStatusUpdateFactory.NewMapStatus(builder.Build()));
            #endregion

            mapPage.Pins.Cast<Models.Station>().ToList().ForEach(x => {
                LatLng point = new LatLng(x.Longitude, x.Latitude);
                //构建Marker图标
                BitmapDescriptor bitmap_off = BitmapDescriptorFactory
                        .FromResource(Resource.Drawable.Map_OffLine);
                BitmapDescriptor bitmap_on = BitmapDescriptorFactory
                        .FromResource(Resource.Drawable.Map_OnLine);
                //构建MarkerOption,用于在地图上添加Marker
                OverlayOptions option = new MarkerOptions().InvokeIcon(bitmap_off);


            layout1.AddView(mapView);
        }

 

posted @ 2019-07-22 09:21  Hs冰哥  阅读(1120)  评论(0编辑  收藏  举报