Csharp/C#教程:用于Animate TopMargin的ObjectAnimator代理无法找到设置/获取分享


用于Animate TopMargin的ObjectAnimator代理无法找到设置/获取

我们正在尝试使用objectanimator代理来动画Android(Xamarin)中的TopMargin属性。

但是,我们收到此错误:

[PropertyValuesHolder]找不到属性TopMargin的setter / getter,其值类型为float

注意:我们尝试过TopMargin,topMargin,GetTopMargin,getTopMargin等,认为它可能是Java和C#之间的套管转换问题,但看起来并非如此。

我们在Activity中开始动画的代码:

translation = new int[] {0, 300}; var anim2 = ObjectAnimator.OfInt( new MarginProxyAnimator(myview), "TopMargin",translation); anim2.SetDuration(500); anim2.Start(); 

我们的代理类:

 public class MarginProxyAnimator : Java.Lang.Object { ///... other code... public int getTopMargin() { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; return lp.TopMargin; } public void setTopMargin(int margin) { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; lp.SetMargins(lp.LeftMargin, margin, lp.RightMargin, lp.BottomMargin); mView.RequestLayout(); } } 

有什么建议吗? 使用代理指向工作Xamarin样本的指针会很有帮助。

谢谢。

您需要将[Export]属性添加到getTopMargin和setTopMargin方法。 例如

 [Export] public int getTopMargin() { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; return lp.TopMargin; } [Export] public void setTopMargin(int margin) { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; lp.SetMargins(lp.LeftMargin, margin, lp.RightMargin, lp.BottomMargin); mView.RequestLayout(); } 

[Export]属性还要求您添加对Mono.Android.Export程序集的引用。

文档:

https://androidapi.xamarin.com/?link=T%3aJava.Interop.ExportAttribute

作为@ wdavo答案的替代方案,您还可以在C#Properties上使用[Export]属性。 所以他的答案中的代码可以变成这样的属性:

上述就是C#学习教程:用于Animate TopMargin的ObjectAnimator代理无法找到设置/获取分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 public int TopMargin { [Export("getTopMargin")] get { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; return lp.TopMargin; } [Export("setTopMargin")] set { var lp = (ViewGroup.MarginLayoutParams)mView.LayoutParameters; lp.SetMargins(lp.LeftMargin, value, lp.RightMargin, lp.BottomMargin); mView.RequestLayout(); } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1004582.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐