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));
我正在尝试在 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));