2015-08-22 19 views
29

CardView öğelerinde CardView öğelerin bulunduğu RecyclerView numaralı bir parçacığım var. Öğelerin en üste kaydırılması gereken tıklama işleminde yüzen bir işlem düğmesi bulunur. scrollToPosition'un yanı sıra RecyclerView ile scrollToPositionWithOffset'u ve ayrıca aşağıda gösterildiği gibi LinearLayoutManager'u kullanmayı denedim. Ama hiç bir etkisi yok. Bu neden böyle? Biri lütfen bana yardım edebilir mi.LinearLayoutManager ile RecyclerView uygulamasının en üstüne gidin.

Ve RecyclerView doğrudan x123 dosyasına SwipeRefreshView içine yerleştirdim. Bağdaştırıcıyı RecyclerView olarak ayarladıktan sonra setFloatingActionButton numaralı telefonu arıyorum.

public void setFloatingActionButton(final View view) { 
    float = (android.support.design.widget.FloatingActionButton) getActivity().findViewById(R.id.float); 
    float.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
    mRecyclerView.smoothScrollToPosition(0); 


      android.support.design.widget.Snackbar.make(view, "Scrolled to Top", android.support.design.widget.Snackbar.LENGTH_SHORT) 
        .setAction("Ok", new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 
          llm.scrollToPosition(0); 

         } 
        }) 
        .setActionTextColor(getActivity().getResources().getColor(R.color.coloLink)) 
        .show(); 
     } 
    }); 
} 
+0

deneyin 'mLayoutManager.scrollToPositionWithOffset (0, 0);' – Antrromet

+0

evet ben denedim .Ama bu da sadece scrollToPosition gibi bir etkisi yoktur. – SRBhagwat

+0

Bu garip, çünkü seninkiyle benzer bir düzenim vardı. Düzen Yöneticisi ile bir "RecyclerView" vardı ve bu bir "SwipeRefreshview" yerleştirildi ve bu benim için çalıştı. – Antrromet

cevap

69

mLayoutManager.scrollToPositionWithOffset(0, 0); 

çalışması gerekir ile yüzen eylem düğmesinin onClick yılında

mRecyclerView.smoothScrollToPosition(0); 

yerine, ideal olarak, yukarıdaki yorumlardan devam ediliyor. Yine de ihtiyacınız olmadığından, SnackBar kodunu kaldırabilirsiniz. Yani, tüm yukarıdaki yöntemde tüm

public void setFloatingActionButton(final View view) { 
    float actionButton = (android.support.design.widget.FloatingActionButton) getActivity() 
      .findViewById(R.id.float); 
    actionButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView 
        .getLayoutManager(); 
      layoutManager.scrollToPositionWithOffset(0, 0); 
     } 
    }); 
} 

gibi görünmelidir Ve onClick() bile denilen, böyle ise eğer yukarıdaki çalışmıyor, daha sonra sınamak söylersek. Bir günlük mesajı eklemeye çalışın ve basılı olup olmadığını görün. Bu kullanarak

+0

Evet, aslında diğer parçalardan gelen çağrıları bu yönteme kaldırarak anladım. Doğrudan onCreate() yönteminde fab oluşturma işlemi gerçekleştirdim. Artık tamamen iyi çalışıyor. – SRBhagwat

+0

Teşekkür ederim. Yardımcı oldu :) – SRBhagwat

+0

Ve aperatif çubuğu ile çalışmıyor. Bu kadar iyi snackbar gerek yoktur. – SRBhagwat

3

Çağrı '(0) scrollToPosition':

public void scrollToPosition(final int position) { 
    if (mRecyclerView != null) { 
     getHandler().post(new Runnable() { 
      @Override 
      public void run() { 
       mRecyclerView.scrollToPosition(position); 
       if (position == 0) { 
        LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 
        layoutManager.scrollToPositionWithOffset(0, 0); 
        mScrollView.fullScroll(View.FOCUS_UP); 
       } 
      } 
     }); 
    } 
} 
+0

mScrollView nedir ..? – david

+0

özel NestedScrollView mScrollView; –

3

yöntemi smoothScrollToPosition() Kullanılması en son Android sürümü ile benim için çalıştı.

layoutManager.smoothScrollToPosition(mRecyclerView, null, 0);