• 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);
            }
  • 相关阅读:
    计算两个日期相差的天数
    获取当前星期几
    window下重置mysql用户密码
    window下安装mysql
    oracle用户密码过期如何处理?
    awk
    RunLoop
    通知中心
    KVO
    多线程
  • 原文地址:https://www.cnblogs.com/Xamarin-Oz/p/11223911.html
Copyright © 2020-2023  润新知