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);
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM