Я реализую FAB в своем приложении с использованием библиотеки дизайна поддержки и после this guide, чтобы добавить исчезновение/повторное появление при прокрутке. Я преобразовал класс ScrollAwareFABBehavior, предоставленный C#, но я получаю следующую ошибку компилятора.Xamarin Android name collash при переопределении методов в FloatingActionButton.Behton
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 показывая код Java, который отображается при двойном нажатии ошибки в Visual Studio,
Интересно, что переопределение C# имеет тип Java.Lang.Object для параметра child, тогда как версия Java использует тип View. – Kiliman