2017-02-22 3 views
1
Scrollen

ich eine RecyclerView haben, die Bilder anzuzeigen, und eine FloatingActionButton gesetzt haben meine Benutzer wie solche an den oberen Rand der Ansicht zurückgehen zu lassen:„Nach oben“ -Taste nur angezeigt werden, nachdem

// On FAB click, scroll back to the top of the layout 
private void handleUp() { 
    FloatingActionButton FAB = (FloatingActionButton) view.findViewById(R.id.upFAB); 
    FAB.setOnClickListener(view1 -> { 
     if (recyclerView != null) { 
      recyclerView.smoothScrollToPosition(0); 
     } 
    }); 
} 

Mit der folgenden Ansicht:

<android.support.design.widget.FloatingActionButton 
    app:fabSize="mini" 
    android:id="@+id/upFAB" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@mipmap/up_icon" 
    android:layout_gravity="bottom|center" 
    android:layout_marginBottom="60dp" /> 

Es sieht wie this aus.

Wie Sie sehen, wird die Schaltfläche die ganze Zeit angezeigt, wie kann ich es nur anzeigen, wenn der Benutzer für einen bestimmten Betrag in der RecyclerView scrollt?

Antwort

3

versuchen auf diese Weise, und sagen Sie mir, ich es nicht versucht

mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition(); 

      if (firstVisibleItem > 1) { 
       //Show FAB 
      } 
      else{ 
       //Hide FAB 
      } 
     } 
    }); 
0

Ich habe es nur durch ListView.

Hier ist das Beispiel mit ListView anstelle von RecycleView.

Versuchen Sie diese, ich hoffe, es wird Ihnen helfen.

listView.setOnScrollListener(new AbsListView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 

     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

      if(firstVisibleItem > 2) 
      { 
       upFAB.setVisibility(View.VISIBLE); 
      } 
      else 
      { 
       upFAB.setVisibility(View.GONE); 
      } 
     } 
    }); 
Verwandte Themen