Xamarin.Forms之AppCompat

  由于Xamarin.Forms中是对官方控件的封装,其实开发过Xamarin.Android的都会知道基础与AppCompat的外观界面是相差很大的,使用方式上也有很多不同,而Forms内部的封装不会对每个都有具体的说明,特别是那些Android平台上面没有的控件,这里需要仔细的记录一下:

1.Frame

     Frame在非AppCompat中,官方的渲染方式是通用Canvas画出一个圆角的矩形,对,就是这个简单,但是你升级AppCompat后发现,我艹,边框咋没有了,更别谈边框颜色了

盗图了:

new Frame {Padding = new Thickness(10), Content = iIconImage, HasShadow = false, BackgroundColor = Color.Transparent, OutlineColor = Color.Transparent};

可以看到,即时将Frame的HasShaow=false,也会有阴影的

原因在于:

Yes in AppCompat frame is mapped to the Card control on Android. This is a bit of a breaking change when porting and you must be aware of it.

没错,AppCompat官方的使用了CardView来替代前面的方式

public class FrameRenderer : CardView, IVisualElementRenderer, IRegisterable, IDisposable

2.ActionBar

FormsAppCompatActivity里面已经封装了Toolbar,android里面使用v7包是可以继续使用ActionBar,但是Forms封装的必须使用'Theme.AppCompat.Light.NoActionBar',必须设置NoActionBar,否则会报错

3.Page的生命周期

这是很奇怪的问题,在原生界面,如果调用相机拍照  调用图库返回是不会触发OnViewAppearing的,但是在V7中会是Page触发该事件

原文地址:https://www.cnblogs.com/yz1311/p/5438841.html