我正在使用支持设计库在我的应用程序中实现FAB,并在this guide之后添加在滚动行为时消失/重新出现。我已将提供给C#的ScrollAwareFABBehavior类转换为但是我收到以下编译器错误。
error: name clash: onStartNestedScroll(CoordinatorLayout,View,View,View,int) in ScrollAwareFABBehavior and onStartNestedScroll(CoordinatorLayout,V,View,View,int) in Behavior have the same erasure, yet neither overrides the other
public boolean onStartNestedScroll (android.support.design.widget.CoordinatorLayout p0, android.view.View p1, android.view.View p2, android.view.View p3, int p4)
where V is a type-variable:
V extends View declared in class Behavior Project.Droid E:\VS Projects\Project\Project.Droid\obj\Debug\android\src\md5fa22044078b50743372e010f51d93dc4\ScrollAwareFABBehavior.java
这是转换后的类:
public class ScrollAwareFABBehavior : FloatingActionButton.Behavior
{
public ScrollAwareFABBehavior(Context context, IAttributeSet attrs) {
}
public override bool OnStartNestedScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View directTargetChild, View target, int nestedScrollAxes) {
return nestedScrollAxes == ViewCompat.ScrollAxisVertical ||
base.OnStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);
}
public override void OnNestedScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
base.OnNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
var fab = (FloatingActionButton)child;
if (dyConsumed > 0 && fab.Visibility == ViewStates.Visible) {
fab.Hide();
} else if (dyConsumed < 0 && fab.Visibility != ViewStates.Visible) {
fab.Show();
}
}
}
我不确定为什么我会收到此错误,因为我只是从基类中覆盖了两个方法,这是我做错了什么或Xamarin Android中的错误? 我创建了a gist,显示了在Visual Studio中双击错误时显示的Java代码,
答案 0 :(得分:0)
您应该可以使用父类CoordinatorLayout.Behavior
而不是FloatingActionButton.Behavior
来解决此问题:
我已经在这个问题上暂时提出了一个错误:
答案 1 :(得分:0)
你应该注意的另一件事是要在你的xml文件中注册将扩展CoordinatorLayout.Behavior
或(我就是这么做)的类,你声明你的浮动操作按钮你应该写这样的东西:
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
app:fabSize="normal"
app:layout_behavior="md566409b1cfad53f1139d359f4a87074d2.ScrollAwareFABBehavior"
android:layout_height="wrap_content"
app:backgroundTint="#3f51b5"
android:layout_gravity="bottom|end"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:src="@drawable/floating_arrow" />
注意属性layout_behavior。您的班级名称前面的字符串可以在位置obj/debug/android/src
的项目文件夹中找到,然后检查所有类似名称的文件夹,例如哪一个包含您的ScrollAwareFABBehavior
班级。