I am tryign to create a extended FAB menu in xamarin android(c#). I have following this article(https://blog.stylingandroid.com/floating-action-button-part-3/), convered all from java code to c# except adding "addOnPreDrawListener" listener for fabContainer(ref to below code)
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;
}
});
I am tring to do following but OnPreDrawListener class is not available in xamarin android.
ViewTreeObserver treeObserver = fabContainer.ViewTreeObserver;
treeObserver.AddOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener
{
});
Please guide me.
Thanks
@paul
How to add addOnPreDrawListener for viewgroup in c#
As @Dharmik Patel said, you could implement the ViewTreeObserver.IOnPreDrawListener
in your Activity
public class MainActivity : AppCompatActivity, ViewTreeObserver.IOnPreDrawListener
{
...
fabContainer.ViewTreeObserver.AddOnPreDrawListener(this);
...
public bool OnPreDraw()
{
//Do your logic
}
}
Alternative choice :
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));