繁体   English   中英

RelativeLayout中Vertical RecyclerView上方的Horizo​​ntal RecyclerView

[英]Horizontal RecyclerView above Vertical RecyclerView in RelativeLayout

我的布局大致如下所示: 在立式RecyclerView顶部的卧式RecyclerView

整个粉红色区域是垂直的RecyclerView 底部矩形是水平的RecyclerView 这两个视图都位于RelativeLayout ,其中水平RecyclerView与底部对齐。

我遇到的问题是:当水平RecyclerView没有足够的项目填满屏幕宽度时,我希望能够在其后滚动垂直RecyclerView 因此,如果您查看图像中的绿色箭头,我想在这种情况下滚动垂直的RecyclerView

我一直无法弄清楚如何使它工作。 我尝试设置一个OnTouchListener ,当触摸水平RecyclerView的项时返回false。 不过,这似乎不起作用。

我也尝试将水平RecyclerView的宽度设置为WRAP_CONTENT但是由于某些原因, RecyclerView大小没有调整。

无论如何,有没有让刷卡穿过水平的RecyclerView 水平的RecyclerView禁用了垂直滚动,因此我不认为垂直滚动甚至可以做任何事情,它只是吸收了它们。

任何意见,将不胜感激。 谢谢!

对于API <23,我测试了以下内容:

    final RecyclerView listA = (RecyclerView) findViewById(R.id.ListA);
    listA.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
    listA.setAdapter(new CustomViewAdapter(100, R.layout.list_a_item)); //first parameter is item count

    final RecyclerView listB = (RecyclerView) findViewById(R.id.ListB);
    listB.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    listB.setAdapter(new CustomViewAdapter(4, R.layout.list_b_item)); // first parameter is item count

    listB.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Rect r = new Rect();
            //get last child view of viewgroup.
            listB.getChildAt(listB.getChildCount()-1).getGlobalVisibleRect(r);
            //do not count margins
            r.offset(-listA.getLeft(), 0);
            if (event.getX() > r.right) {
                //Pass touch event directly to backround recycle view
                listA.onTouchEvent(event);
                return true;
            }
            return false;
        }
    });

结果: 在此处输入图片说明

RecycleView wrap_content应该从API 23开始工作。您可以设置wrap_content,以便在没有足够的项目时视图不会填满屏幕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM