Xamarin android - 如何在 C# 中为视图组添加 addOnPreDrawListener

Xamarin android - How to add addOnPreDrawListener for viewgroup in c#

我正在尝试在 xamarin android(c#) 中创建一个扩展的 FAB 菜单。我已经关注这篇文章(https://blog.stylingandroid.com/floating-action-button-part-3/),除了添加 "addOnPreDrawListener" 之外,将所有从 java 代码转换为 c# fabContainer 的监听器(参考下面的代码)

 final ViewGroup fabContainer = (ViewGroup) findViewById(R.id.fab_container);
 fabContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            fabContainer.getViewTreeObserver().removeOnPreDrawListener(this);
            offset1 = fab.getY() - fabAction1.getY();
            fabAction1.setTranslationY(offset1);
            offset2 = fab.getY() - fabAction2.getY();
            fabAction2.setTranslationY(offset2);
            offset3 = fab.getY() - fabAction3.getY();
            fabAction3.setTranslationY(offset3);
            return true;
        }
    });

我正在尝试执行以下操作,但 OnPreDrawListener class 在 xamarin android 中不可用。

  ViewTreeObserver treeObserver = fabContainer.ViewTreeObserver;
        treeObserver.AddOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener
        {
        });

请指导我。

谢谢

@保罗

How to add addOnPreDrawListener for viewgroup in c#

正如@Dharmik Patel 所说,您可以在 Activity

中实现 ViewTreeObserver.IOnPreDrawListener
public class MainActivity : AppCompatActivity, ViewTreeObserver.IOnPreDrawListener
{
    ...
    fabContainer.ViewTreeObserver.AddOnPreDrawListener(this);
    ...

    public bool OnPreDraw()
    {
        //Do your logic 
    }
}

替代选择:

class MyOnPreDrawListener : Java.Lang.Object, ViewTreeObserver.IOnPreDrawListener
{
    private MainActivity mainActivity;

    public MyOnPreDrawListener(MainActivity mainActivity)
    {
        this.mainActivity = mainActivity;
    }

    public bool OnPreDraw()
    {
       //Do your logic 
    }
}

fabContainer.ViewTreeObserver.AddOnPreDrawListener(new MyOnPreDrawListener(this));