让两个RecyclerView一起滑动

2018-06-21 遇到的一点小问题
之前有个界面做类似表格的小功能,GitHub随便找了个表格控件,但使用了发现坑特多,改个小细节要改的东西不少,高度边距调整也很麻烦。
就自己用LinearLayoutRecyclerViewHorizontalScrollViewTextView、、、弄了个简单的。

让两个RecyclerView一起滑动_第1张图片
TableView

没什么难点,就是有几个需要注意的地方。第一个就是左右两个RecyclerView联动。有一个滑动时,另一个也滑动相应距离。

        leftRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (RecyclerView.SCROLL_STATE_IDLE != recyclerView.getScrollState()) {
                    rightRecycler.scrollBy(dx, dy);
                }
            }
        });
        rightRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (RecyclerView.SCROLL_STATE_IDLE != recyclerView.getScrollState()) {
                    leftRecycler.scrollBy(dx, dy);
                }
            }
        });

然后就是右边表格的宽度。为了省事,使用的HorizontalScrollView获得左右滑动的能力。然后上下分别使用
RecyclerView展示数据。这样很省事,不过需要根据TextView数量给RecyclerView设置固定宽度。因为TextView宽度是设置的固定的,所以比较省事。记录一下,之前忘记设置了。

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) topRecycler.getLayoutParams();
params.width = TextView宽度*数量;
topRecycler.setLayoutParams(params);

你可能感兴趣的:(让两个RecyclerView一起滑动)