SwitchRender.SwitchRender();Xamarin.Forms渲染器已过时
我正在Android中实现SwitchRenderer的代码,但当我收到警告时,代码似乎存在问题: “SwitchRender.SwitchRender()”已过时;'这位建筑师是 从2.5版起,将被淘汰。请改用SwitchRender(上下文)。' 有人知道我如何解决这个问题吗:SwitchRender.SwitchRender();Xamarin.Forms渲染器已过时,xamarin,xamarin.forms,Xamarin,Xamarin.forms,我正在Android中实现SwitchRenderer的代码,但当我收到警告时,代码似乎存在问题: “SwitchRender.SwitchRender()”已过时;'这位建筑师是 从2.5版起,将被淘汰。请改用SwitchRender(上下文)。' 有人知道我如何解决这个问题吗: using Japanese.Android; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; using Japanese; [assembl
using Japanese.Android;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using Japanese;
[assembly: ExportRenderer(typeof(ExtSwitch), typeof(ExtSwitchRenderer))]
namespace Japanese.Android
{
public class ExtSwitchRenderer : SwitchRenderer
{
private ExtSwitch view;
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Switch> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || e.NewElement == null)
return;
view = (ExtSwitch)Element;
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean)
{
if (this.Control != null)
{
if (this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
else
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
this.Control.CheckedChange += this.OnCheckedChange;
UpdateSwitchThumbImage(view);
}
//Control.TrackDrawable.SetColorFilter(view.SwitchBGColor.ToAndroid(), PorterDuff.Mode.Multiply);
}
}
private void UpdateSwitchThumbImage(CustomSwitch view)
{
if (!string.IsNullOrEmpty(view.SwitchThumbImage))
{
view.SwitchThumbImage = view.SwitchThumbImage.Replace(".jpg", "").Replace(".png", "");
int imgid = (int)typeof(Resource.Drawable).GetField(view.SwitchThumbImage).GetValue(null);
Control.SetThumbResource(Resource.Drawable.icon);
}
else
{
Control.ThumbDrawable.SetColorFilter(view.SwitchThumbColor.ToAndroid(), PorterDuff.Mode.Multiply);
// Control.SetTrackResource(Resource.Drawable.track);
}
}
private void OnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e)
{
if (this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
else
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
}
}
protected override void Dispose(bool disposing)
{
this.Control.CheckedChange -= this.OnCheckedChange;
base.Dispose(disposing);
}
}
}
使用日语.Android;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
使用日语;
[程序集:ExportRenderer(typeof(ExtSwitch),typeof(ExtSwitchRenderer))]
名称空间Japanese.Android
{
公共类ExtSwitchRenderer:SwitchRenderer
{
私有交换机视图;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | e.NewElement==null)
返回;
视图=(ExtSwitch)元素;
if(Android.OS.Build.VERSION.SdkInt>=Android.OS.BuildVersionCodes.JellyBean)
{
if(this.Control!=null)
{
if(this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
其他的
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
this.Control.CheckedChange+=this.OnCheckedChange;
更新SwitchThumbImage(视图);
}
//Control.TrackDrawable.SetColorFilter(view.SwitchBGColor.ToAndroid(),PorterDuff.Mode.Multiply);
}
}
私有void更新SwitchThumbImage(CustomSwitch视图)
{
如果(!string.IsNullOrEmpty(view.SwitchThumbImage))
{
view.SwitchThumbImage=view.SwitchThumbImage.Replace(“.jpg”和“”).Replace(“.png”和“”);
intimgid=(int)typeof(Resource.Drawable).GetField(view.SwitchThumbImage).GetValue(null);
Control.SetThumbResource(Resource.Drawable.icon);
}
其他的
{
Control.ThumbDrawable.SetColorFilter(view.SwitchThumbColor.ToAndroid(),PorterDuff.Mode.Multiply);
//Control.SetTrackResource(Resource.Drawable.track);
}
}
私有void OnCheckedChange(对象发送方,CompoundButton.CheckedChangeEventArgs e)
{
if(this.Control.Checked)
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOnColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
其他的
{
this.Control.TrackDrawable.SetColorFilter(view.SwitchOffColor.ToAndroid(),PorterDuff.Mode.SrcAtop);
}
}
受保护的覆盖无效处置(布尔处置)
{
this.Control.CheckedChange-=this.OnCheckedChange;
基地。处置(处置);
}
}
}
查看答案。Android自定义渲染器的新方法是:
public class ExtSwitchRenderer : SwitchRenderer
{
private ExtSwitch view;
public ExtSwitchRenderer(Context context) : base(context) { }
....
}
然后,如果您确实需要在自定义呈现程序中使用Android上下文,您可以使用通过构造函数传入的上下文,而不是Forms.context
。查看答案。Android自定义渲染器的新方法是:
public class ExtSwitchRenderer : SwitchRenderer
{
private ExtSwitch view;
public ExtSwitchRenderer(Context context) : base(context) { }
....
}
然后,如果您确实需要在自定义渲染器中使用Android上下文,您可以使用通过构造函数传入的上下文,而不是
Forms.context
。非常感谢!非常感谢!