我正在尝试在 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 类在 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));
关于c# - Xamarin android - 如何在 c# 中为 viewgroup 添加 addOnPreDrawListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47130705/