2016-01-14 44 views
6

我正在使用RecyclerView水平显示项目。我想将选中的项目设置为这样的视图的中心如何将项目设置为回收站视图的中心时

enter image description here

这是我正在做它:

LinearLayoutManager layoutManager 
       = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 
     recyclerView.setLayoutManager(layoutManager); 
+1

请提供你的愿望实现,哪些是你已经尝试过这样的截图远 – TejjD

+0

尝试使用,而不是RecyclerView'ViewPager'。 –

+0

@Ravi你有没有得到任何解决方案? –

回答

0

请重排序这个解决方案的:

LinearLayoutManager layoutManager = ((LinearLayoutManager)recyclerView.getLayoutManager()); 
int totalVisibleItems = layoutManager.findLastVisibleItemPosition() - layoutManager.findFirstVisibleItemPosition()  
int centeredItemPosition = totalVisibleItems/2; 
    recyclerView.smoothScrollToPosition(position); 
    recyclerView.setScrollY(centeredItemPosition); 

希望这有助于。

+1

recyclerview没有getLastVisiblePosition,getFirstVisiblePosition和smoothScrollByOffset在recyclerView中不可用。 – ravi

+1

感谢Saeed,但getLastVisiblePosition和getFirstVisiblePosition在recyclerview中不可用。 – ravi

+2

@ravi这些都是'LayoutManager'方法 –

1

这是为了在滚动时或点击ite时捕捉中心的项目。

您需要将SnapHelper添加到RecyclerView中。这里是如何:

final RecyclerView recyclerViewObject = view.findViewById(R.id.recyclerViewObjectId); 

final LinearSnapHelper snapHelper = new LinearSnapHelper(); 
snapHelper.attachToRecyclerView(recyclerViewObject); 

recyclerViewObject.setOnFlingListener(snapHelper); 

,那么你只需要调用这个代码

recyclerViewObject.addOnItemTouchListener(
      new RecyclerItemClickListener(getContext(), recyclerViewObject ,new RecyclerItemClickListener.OnItemClickListener() { 
       @Override public void onItemClick(View view, int position) { 
        recyclerViewObject.smoothScrollToPosition(position); 
       } 

       @Override public void onLongItemClick(View view, int position) { 
       } 
      }) 
    ); 
相关问题