禁用Android的RecylerView滚动和fling

时间:2015-06-01 17:55:56

标签: android android-recyclerview

我正在尝试实现一次在屏幕上显示1个CardView的RecylerView,并通过左右两个箭头ImageButtons控制。我不想让用户自己滚动RecyclerView。如何禁用RecylerView的滚动和拖动功能?

这是我用LinearLayoutManager初始化视图的地方

    final LinearLayoutManager llm = new LinearLayoutManager(this);

    llm.setOrientation(LinearLayoutManager.HORIZONTAL);

    final RecyclerView recList = (RecyclerView) findViewById(R.id.card_holder);
    recList.setHasFixedSize(true);
    recList.setLayoutManager(llm);

这里是我设置左右滚动按钮的地方

  ImageButton rightClick = (ImageButton) findViewById(R.id.rightClick);
  ImageButton leftClick = (ImageButton) findViewById(R.id.leftClick);


    rightClick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position = llm.findFirstVisibleItemPosition();
            if(position != recList.getAdapter().getItemCount() - 1) {
                markers[position + 1].showInfoWindow();
                GMap.moveCamera(CameraUpdateFactory.newLatLngZoom(result.get(position + 1).latlng, 17.0f));
                recList.smoothScrollToPosition(llm.findFirstVisibleItemPosition() + 1);
            }
        }
    });

    leftClick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int position = llm.findFirstVisibleItemPosition();
            if(position != 0) {
                GMap.moveCamera(CameraUpdateFactory.newLatLngZoom(result.get(llm.findFirstVisibleItemPosition() - 1).latlng, 17.0f));
                recList.smoothScrollToPosition(llm.findFirstVisibleItemPosition() - 1);
            }
        }
    });

2 个答案:

答案 0 :(得分:0)

我不知道确切的解决方案,但这个对我有用

  

verticalRow.setNestedScrollingEnabled(假);

//此处verticalRow是recylerview对象

答案 1 :(得分:0)

这似乎是AdapterViewFlipper提供的行为 摘录如下。

  

课程概述

     

简单的ViewAnimator,可以在两个或多个视图之间设置动画   已添加到它。一次只能展示一个孩子。如果   要求,可以在每个孩子之间自动翻转   间隔。