ruf*_*ufo 5 c# android xamarin.android xamarin
我们正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)
我们的代理类:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?使用代理指向工作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();
}
Run Code Online (Sandbox Code Playgroud)
[Export] 属性还要求您添加对 Mono.Android.Export 程序集的引用。
文档:
http://androidapi.xamarin.com/?link=T%3aJava.Interop.ExportAttribute
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |