簡體   English   中英

當覆蓋FloatingActionButton.Behavior中的方法時,Xamarin Android名稱發生沖突

[英]Xamarin Android name clash when overriding methods in FloatingActionButton.Behavior

我正在使用支持設計庫在我的應用程序中實現FAB,並按照本指南添加滾動行為時消失或重新出現的內容。 我已經將提供給C#的ScrollAwareFABBehavior類轉換為C#,但是出現以下編譯器錯誤。

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中的錯誤? 我創建了一個要點 ,該要點顯示了在Visual Studio中雙擊錯誤時顯示的Java代碼,

您應該可以通過使用父類CoordinatorLayout.Behavior而不是FloatingActionButton.Behavior來克服此問題:

https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.Behavior.html

我已經繼續並暫時就此問題提交了一個錯誤:

https://bugzilla.xamarin.com/show_bug.cgi?id=34777

您需要注意的另一件事是注冊將擴展CoordinatorLayout.Behavior的類,或者(在我做的這件事中)在您的XML文件中聲明浮動操作按鈕,您應該編寫如下內容:

<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類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM