2017-08-15 50 views
1

我正在C#Xamarin.AndroidXamarin.Android連接的Fab按鈕RecyclerView

GITHUB - jamesmontemagno/FloatingActionButton-for-Xamarin.Android

這個庫現在已經過時了,我不覺得怎麼我的晶圓廠按鈕連接到recyclerview:當向上或向下滾動時,我希望晶圓廠按鈕出現並消失..

這是github代碼是如何。但今天不工作

var listView = FindViewById<ListView>(Android.Resource.Id.list); 
var fab = FindViewById<FloatingActionButton>(Resource.Id.fab); 
fab.AttachToListView(listView); 

我的XML:

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipe_refresh" 
     android:layout_width="match_parent" 
     android:layout_marginTop="100dp" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/buildpizzaingredienti_toolbar"> 
     <android.support.v7.widget.RecyclerView 
      android:id="@+id/buildpizzaingredienti_cmListView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_margin="16dp" 
     android:src="@drawable/ic_next" 
     app:backgroundTint="#4A8E53" /> 

回答

1

有一個例子如何添加動畫上FloatingActionButtonAnimating an Android Floating Action Button 但我以爲也許你會在C#與翻譯的Java代碼的問題,所以我很快就做到了。

class FAB_Hide_on_Scroll : FloatingActionButton.Behavior 
{ 
    public FAB_Hide_on_Scroll(Context context, IAttributeSet attr) : base() 
    { 

    } 
    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 = child.JavaCast<FloatingActionButton>(); 
     if (fab.Visibility == ViewStates.Visible && dyConsumed > 0) 
     { 
      fab.Hide(); 
     } 
     else if (fab.Visibility == ViewStates.Gone && dyConsumed < 0) 
     { 
      fab.Show(); 
     } 
    } 
    public override bool OnStartNestedScroll(CoordinatorLayout coordinatorLayout, Java.Lang.Object child, View directTargetChild, View target, int nestedScrollAxes) 
    { 
     return nestedScrollAxes == ViewCompat.ScrollAxisVertical; 
    } 
} 

然後,您必須將此類包含在您的FloatingActionButton行爲中才能獲得所需的行爲。就像這樣:

app:layout_behavior="com.yourpackagename.FAB_Hide_on_Scroll"

我不知道確實爲您RecyclerviewFloatingActionButton容器或父母必須是CoordinatorLayout。請注意,我沒有測試這個代碼,所以我不知道它會拋出一些錯誤,你將不得不這樣做。

+0

我測試你的代碼,但是當我編譯我得到的替代方法的兩個錯誤: 'xamarin onNestedScroll(CoordinatorLayout,視圖,視圖,INT,INT,INT,INT)在FAB_Hide_on_Scroll和onNestedScroll(CoordinatorLayout,V,查看,int,int,int,int)在Behavior中有相同的擦除,但都沒有覆蓋其他的public void onNestedScroll(android.support.design.widget.CoordinatorLayout p0,android.view.View p1,android.view.View p2, int p3,int p4,int p5,int p6)其中V是一個類型變量:V extends在類Behavior'中聲明的視圖 – Fabio