gpt4 book ai didi

c# - 动画 TopMargin 的 ObjectAnimator 代理找不到设置/ getter

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:05 26 4
gpt4 key购买 nike

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

但是,我们得到这个错误:

[PropertyValuesHolder] Couldn't find setter/getter for property TopMargin with value type 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 程序集的引用。

文档:

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

关于c# - 动画 TopMargin 的 ObjectAnimator 代理找不到设置/ getter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com