2017-08-15 63 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